正如标题所说,我试图总结使用for循环迭代数组。 你能不能给我一些关于我在哪里出错的指示。我正在返回值NaN。
var total = 0;
function sum(input) {
for (idx=0; idx<=input; idx++) {
total += input[idx];
}
return total;
}
答案 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
的问题是因为您的数组遍历数组直到结束,而不是从索引0
到input.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 )...
。