作为标题说我想总结使用for循环遍历数组。 你可以给我一些指导,说明我在哪里会出错。我将返回值NaN。遍历一个数组,并总结所有值与JS
var total = 0;
function sum(input) {
for (idx=0; idx<=input; idx++) {
total += input[idx];
}
return total;
}
作为标题说我想总结使用for循环遍历数组。 你可以给我一些指导,说明我在哪里会出错。我将返回值NaN。遍历一个数组,并总结所有值与JS
var total = 0;
function sum(input) {
for (idx=0; idx<=input; idx++) {
total += input[idx];
}
return total;
}
您正在使用input
既作为一个整数,而当数值的数组。可能你的意思是for(var idx = 0; idx < input.length; ++idx)...
。
ahh非常感谢..这就是我错误的地方..现在已经排序它非常感谢 – 2015-02-11 14:03:11
@dannywhite:一定要考虑其他答案:您的'total'是全球范围的。 – xtofl 2015-02-11 14:11:18
你需要ot声明总功能,你也需要声明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;
}
total应该在sum函数中声明... – aurelius 2015-02-11 13:58:28
仍然收到NaN .. – 2015-02-11 13:58:46
变量总没有声明!
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length; idx++) {
total += input[idx];
}
return total;
}
它似乎向我宣布。只有它是全球性的,所以结果会一直增长。 – xtofl 2015-02-11 14:02:29
你其实并不需要一个循环做到这一点在现代浏览器,你可以使用Array.reduce功能:
var sum = input.reduce(function(a,b){
return a+b;
}, 0);
不错的功能风格 - 不是很新手友好,但。 – xtofl 2015-02-11 14:03:35
问题而导致在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);
声明函数内部的变量总数,并且还使用input.length-1来定义循环的范围:
function sum(input) {
var total = 0;
for (idx=0; idx <= input.length-1; idx++) {
total += input[idx];
}
return total;
}
变量总数未被声明 – aurelius 2015-02-11 13:57:01
您可能想要在'for'循环中使用'idx 2015-02-11 13:58:25
谢谢,是的,改变<= to =似乎有帮助 – 2015-02-11 14:01:19