遍历数组并用 JS 求和所有值

iterate over an array and sum up all values with JS

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

var total = 0;

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

您需要在函数中声明 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;
}

变量总数未声明!

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

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

var sum = input.reduce(function(a,b){
    return a+b;
}, 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);

在函数内部声明变量total,同样用input.length-1定义循环范围:

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

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