将数组作为参数传递给js函数

时间:2016-01-06 10:39:37

标签: javascript arrays

我想创建一个从数组中总结值的基本函数。我知道数组简化方法,但我最初想要使用循环“for”而不是如下......但它返回NaN ...为什么?

var numbers=[1,2];
var total;
function sum(array){
   total=0;
   for(var x=0;x<=array.length;x++){    
    total += array[x];
   }
   return total;
}

4 个答案:

答案 0 :(得分:1)

执行sum(numbers),同样在循环中,中断条件应该是x<array.length;,您也不需要使total成为全局变量来继续向其添加数组值。

var numbers = [1, 2];

function sum(array) {
  var total = 0;
  for (var x = 0; x < array.length; x++) {
    total += array[x];
  }
  return total;
}

var total = sum(numbers);
alert(total);

虽然较短的方法是在数组上使用.reduce

var array = [1,2]
var sum = array.reduce(function(prev, curr) { return prev + curr; }, 0);
alert(sum);

此处您还可以提供 Arrow Function ,而不是完整的功能。

var array = [1, 2]
var sum = array.reduce((prev, curr) => prev + curr);
alert(sum);

答案 1 :(得分:0)

您还可以使用reduce来总结所有元素:

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

答案 2 :(得分:0)

如果您想继续使用初始方法,那么您不必从函数内返回全局变量。您可以直接在函数内部更改全局变量;

var numbers=[1,2],
    total;
function sum(array){
   total=0;
   for(var x = 0, len = array.length; x < len; x++){    
    total += array[x];
   }
}

在其他情况下,当然,当您打算形成独立的结果时,最好使用局部变量

答案 3 :(得分:0)

你得到NAN,因为循环的条件是x<=array.length,最后一次迭代会将array[length]添加到总和中,而数组的最后一项是array[length - 1]