迭代一个数组并用JS总结所有值

时间:2015-02-11 13:54:55

标签: javascript arrays sum iteration

正如标题所说,我试图总结使用for循环迭代数组。 你能不能给我一些关于我在哪里出错的指示。我正在返回值NaN。

var total = 0;

function sum(input) {
    for (idx=0; idx<=input; idx++) {
        total += input[idx];
    }
    return total;
}

6 个答案:

答案 0 :(得分:5)

在现代浏览器中,您实际上不需要循环来执行此操作,您可以使用Array.reduce函数:

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

答案 1 :(得分:2)

你需要声明total到函数,你还需要声明idx。另一件事,而不是写idx <= input.length,你必须写idx <= input.length - 1。由于最后一个索引将是未定义的。

尝试

function sum(input) {
    total = 0;
    for (var idx = 0; idx <= input.length - 1; idx++) {
        total += input[idx];
    }
    return total;
}

答案 2 :(得分:0)

变量总计未声明!

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

答案 3 :(得分:0)

导致NaN的问题是因为您的数组遍历数组直到结束,而不是从索引0input.length-1 试试这个: http://jsfiddle.net/t9tfofxv/

var total = 0;
function sum(input) {
for (var idx=0; idx< input.length; idx++) {
    total += input[idx];
}
return total;
}
var s=sum([1,2,3,4]);
alert(s);

答案 4 :(得分:0)

在函数内声明变量total,并使用input.length-1来定义循环的范围:

function sum(input) {
    var total = 0;
    for (idx=0; idx <= input.length-1; idx++) {
        total += input[idx];
    }
    return total;
}

答案 5 :(得分:0)

您将input用作整数和值数组。可能你的意思是for( var idx = 0; idx < input.length; ++idx )...