将数组奇数索引处的所有数字平方

时间:2015-08-07 07:33:45

标签: javascript arrays

我试图将奇数索引处的所有整数平方,以便我可以稍后将整个数组相加。这是我到目前为止的地方:

function verryNiceFunc(arr) {
    var x = arr.filter(function(num) {
        if (num % 2) return num;
    }).reduce(function(previousValue, currentValue, index, array) {
      return previousValue + currentValue;
    });
    var y = arr.filter(function(num) {
        if (num % 2 != 1) return num;
    }).reduce(function(previousValue, currentValue, index, array) {
      return (currentValue * currentValue);
    });
    console.log(y);
    return x + y;
}

verryNiceFunc([5, 6, 7, 8, 9, 10, 11, 12]);
//Should return 376

如您所见,var y需要一点编辑。我想我需要一个for循环,但不知道如何完成它。

http://jsfiddle.net/marcusdei/xez8obd3/11/

2 个答案:

答案 0 :(得分:4)

这应该这样做。在回调函数体中只有一个reduce操作,带有奇数/偶数开关:



var values = [5, 6, 7, 8, 9, 10, 11, 12];
var result = values.reduce(function(result, value, i) {
  return result += (i % 2 ? value * value : value);
}, 0);

alert(result);




答案 1 :(得分:2)

Robby's answer已经足够好了,但是如果你想加快速度,你总是可以依赖经典的for周期:

for (var i = 0, sum = 0; i < arr.length; i++)
    sum += i & 1 ? arr[i] * arr[i] : arr[i];