作爲標題說我想總結使用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