2014-09-23 121 views
0

我有以下代碼薩姆數組元素的返回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。有人能幫我嗎?

謝謝!

+0

同樣的效果除初始化'sum'爲0,你可以刪除'parseInt',假設數組元素將始終爲數字。另外,如果'Array.prototype'已被擴展,避免在訪問數組元素時使用'in'。在這種情況下,for循環是最好的。 – 2014-09-23 12:17:38

回答

1

這裏是你的代碼

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])

+2

使用基數10作爲parseInt – mithunsatheesh 2014-09-23 12:00:52

+0

這很奇怪,我在第一次嘗試它並沒有奏效。所以初始化是問題。 – 2014-09-23 15:50:11

3

你永遠不會初始化sum,所以它開始undefined

undefined +數= NaN

2
undefined

+ 「任意數量」 是總是NaN

聲明sum,起始值爲0。 (又名:初始化)

var sum = 0; 

此外,這是一個好主意,在parseInt使用基數:

parseInt(A[key], 10) 

這可以確保parseInt總是試圖解釋A[key]爲十進制數。