nunnly / everycode

Javascript 每日一练
116 stars 26 forks source link

2014年11月27日 D6 #12

Open nunnly opened 9 years ago

nunnly commented 9 years ago
/* 今日任务,完成以下的两个函数,
 * 根据第一个参数`array`返回`number`数量的数的和
 * var values = [1,3,12,4,5]
 * minimumSum(values, 2); // => 1+3 = 4
 * maximumSum(values, 3); // => 4+5+12 = 21
 *
 * param1 Array , param2 Number
 * return Number

 */

function minimumSum(value, num) {

}

function maximumSum(value, num) {

}
XadillaX commented 9 years ago
function minimumSum(value, num) {
    return value.join("☀").split("☀").sort(function(a, b) { return parseInt(a) - parseInt(b); }).slice(0, num).reduce(function(v, n) {
        return v + parseInt(n);
    }, 0);
}

function maximumSum(value, num) {
    return value.join("☀").split("☀").sort(function(a, b) { return parseInt(b) - parseInt(a); }).slice(0, num).reduce(function(v, n) {
        return v + parseInt(n);
    }, 0);
}
think2011 commented 9 years ago
function minimumSum(value, num) {
    _newV = (value.sort(function(a, b){return +a > +b})).slice(0, num);
    return _newV.reduce(function(prev, curr){ return prev + curr});
}

function maximumSum(value, num) {
    _newV = (value.sort(function(a, b){return +a > +b})).slice(-num);
    return _newV.reduce(function(prev, curr){ return prev + curr});
}

// 测试用例
var values = [1,3,12,4,5];
console.log(minimumSum(values, 2)); // => 1+3 = 4
console.log(values); // 这里出错了,因为把原来的数组顺序打乱了。
console.log(maximumSum(values, 3)); // => 4+5+12 = 21
XadillaX commented 9 years ago

@think2011

var values = [1,3,12,4,5];
console.log(minimumSum(values, 2)); // => 1+3 = 4
console.log(values);
console.log(maximumSum(values, 3)); // => 4+5+12 = 21

你自己看一下结果。

think2011 commented 9 years ago

@XadillaX 4 和 21, 是指要输出 1+3 = 4 和 4+5+12 = 21吗? (⊙o⊙)哦,谢谢!我明白了,我把数组给切了!。

XadillaX commented 9 years ago

@think2011 那我举个例子:

var values = [1,3,12,4,5];
console.log(minimumSum(values, 3));
console.log(maximumSum(values, 3));

你觉得要输出什么,而你的代码输出什么了。

XadillaX commented 9 years ago

@think2011 你这还是把原数组顺序打乱了啊。

think2011 commented 9 years ago

@XadillaX (^o^)/YES! 难怪你需要 .join("☀").split("☀")

nunnly commented 9 years ago
function minimumSum(values, n) {
  values.sort(function(x,y){
    return x-y
  })
  var num = 0;
  for(var i=0;i<n;i++){
    num += values[i];
  }
  return num
}

function maximumSum(values, n) {
  values.sort(function(x,y){
    return y-x
  })
  var num = 0;
  for(var i=0;i<n;i++){
    num += values[i];
  }
  return num
}

写代码之前真心不能看@XadillaX 写的答案。。。。

XadillaX commented 9 years ago

@nunnly 为毛 -。 -

你也把 values 的顺序打乱了。