没有Jquery的数组的总和

时间:2016-11-11 20:43:38

标签: javascript arrays

所以我使用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上收到错误

公开征求建议,也许我只是错误地使用我的阵列。 也许我需要做更多的阵列研究?

3 个答案:

答案 0 :(得分:6)

你的减少是错误的。您需要返回添加到累加器的新值(a)。

&#13;
&#13;
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;
&#13;
&#13;

没有明显的理由导致第二个函数不正确(除了i <= array.length,这将超出最后一个增量的界限)。我们需要看看array是什么来确定问题,但听起来它实际上并不是一个数组。

您可以编写函数的另一种方法是:

&#13;
&#13;
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;
&#13;
&#13;

在处理数组时,我倾向于使用forEach而不是for循环。它消除了走出界限的潜在错误。

答案 1 :(得分:3)

您的reduce功能不正确。您需要返回添加两个值的结果。

var sum = array.reduce(function(a,b) { return a + b }, 0);

答案 2 :(得分:1)

这是我知道的最简单的方法,如果你不喜欢其他的操作符并且喜欢循环那么多&lt; 3:

&#13;
&#13;
    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;
&#13;
&#13;

祝你好运!