2014-09-23 6 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

와 같은 효과를 제거 할 수있다'parseInt'를 초기화해야한다 코드

function solution (A) { var sum = 0; var len = A.length; for (key in A) { sum += parseInt(A[key], 10); } return sum; } 

의 작업 버전입니다 배열 요소가 항상 숫자라고 가정합니다. 또한'Array.prototype'이 확장 된 경우 배열 요소에 접근 할 때'in'을 사용하지 마십시오. 'for' 루프는이 경우 가장 좋습니다. –

답변

1

여기, 당신은 sum 또한 +(parseInt(A[key])), 0으로`sum`를 초기화 게다가 parseInt(A[key])

+2

parseInt에 대한 기수 10을 사용하십시오 – mithunsatheesh

+0

첫 번째 인스턴스에서 시도한 것은 이상한 일이며 작동하지 않았습니다. 초기화가 문제였습니다. –

3

sum을 초기화하지 않으므로 undefined으로 시작합니다.

undefined는 + 수 = NaN

2

undefined + "숫자는"항상 NaN입니다.

0의 시작 값으로 sum을 선언하십시오.

var sum = 0; 

또한,이 parseInt에서 기수를 사용하는 것이 좋습니다 : (일명 초기화) :이 항상 확인 parseInt하게 진수로 A[key]를 해석하려고

parseInt(A[key], 10) 

.