我有以下代碼薩姆數組元素的返回NaN
var Arr = [-1,3,-4,5,1,-6,2,1];
function solution (A) {
var sum;
var len = A.length;
for (var key in A) {
sum += +(parseInt(A[key]));
}
return sum;
}
solution(Arr);
和它返回NaN。有人能幫我嗎?
謝謝!
我有以下代碼薩姆數組元素的返回NaN
var Arr = [-1,3,-4,5,1,-6,2,1];
function solution (A) {
var sum;
var len = A.length;
for (var key in A) {
sum += +(parseInt(A[key]));
}
return sum;
}
solution(Arr);
和它返回NaN。有人能幫我嗎?
謝謝!
這裏是你的代碼
function solution (A) {
var sum = 0;
var len = A.length;
for (key in A) {
sum += parseInt(A[key], 10);
}
return sum;
}
的工作版本,您應該初始化sum
也是你+(parseInt(A[key]))
已經爲parseInt(A[key])
使用基數10作爲parseInt – mithunsatheesh 2014-09-23 12:00:52
這很奇怪,我在第一次嘗試它並沒有奏效。所以初始化是問題。 – 2014-09-23 15:50:11
你永遠不會初始化sum
,所以它開始undefined
。
undefined
+數= NaN
undefined
+ 「任意數量」 是總是NaN
。
聲明sum
,起始值爲0
。 (又名:初始化)
var sum = 0;
此外,這是一個好主意,在parseInt
使用基數:
parseInt(A[key], 10)
這可以確保parseInt
總是試圖解釋A[key]
爲十進制數。
同樣的效果除初始化'sum'爲0,你可以刪除'parseInt',假設數組元素將始終爲數字。另外,如果'Array.prototype'已被擴展,避免在訪問數組元素時使用'in'。在這種情況下,for循環是最好的。 – 2014-09-23 12:17:38