繁体   English   中英

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

[英]Square all the numbers at an array's odd indices

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

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/

这应该做到这一点。 在回调函数体中只有一个使用奇数/偶数开关的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); 

Robby的答案已经足够好了,但是如果你想加快速度,你总是可以依赖经典for循环:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM