[英]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循环,但不知道如何完成它。
这应该做到这一点。 在回调函数体中只有一个使用奇数/偶数开关的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.