所以我使用bracket.io来做我的javascript编程,我想知道如何对数组进行求和。 现在我已经研究过了.reduce
var sum = array.reduce(function(a,b){return a,b},0);
但这是运行错误。我还以为我会尝试制作自己的专柜......
function sum(array) {
var sum = 0;
for(i = 0;i <= array.length; ++i) {
sum += array[i];
}
return sum;
}
但即使这样做也不适合我。我在array.length上收到错误
公开征求建议,也许我只是错误地使用我的阵列。 也许我需要做更多的阵列研究?
答案 0 :(得分:6)
你的减少是错误的。您需要返回添加到累加器的新值(a
)。
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var sum = array.reduce(function(a, b) {
return a + b;
});
console.log(sum);
&#13;
没有明显的理由导致第二个函数不正确(除了i <= array.length
,这将超出最后一个增量的界限)。我们需要看看array
是什么来确定问题,但听起来它实际上并不是一个数组。
您可以编写函数的另一种方法是:
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var count = 0;
var sum = function(num) {
count += num;
}
array.forEach(sum);
console.log(count);
&#13;
在处理数组时,我倾向于使用forEach
而不是for循环。它消除了走出界限的潜在错误。
答案 1 :(得分:3)
您的reduce
功能不正确。您需要返回添加两个值的结果。
var sum = array.reduce(function(a,b) { return a + b }, 0);
答案 2 :(得分:1)
这是我知道的最简单的方法,如果你不喜欢其他的操作符并且喜欢循环那么多&lt; 3:
var arr = [1, 3, 7, 19];
function arrSum(arr) {
var sum = 0;
for(var i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log(sum);
}
arrSum(arr);
&#13;
祝你好运!