2014-09-30 2 views
2

다음 JS 문제가 있습니다. Array.map 메서드를 사용하여 매핑 된 함수로 parseInt 함수를 사용하여 문자열 배열을 변환하려고하면이 이상한 결과가 발생했습니다. 여기서 뭐가 잘못 됐니?parseInt와 함께 Array.map()을 사용하면 예기치 않은 결과가 발생합니다.

console.log(['1','1'].map(parseInt)) 

이 포함 된 이상한 배열을 돌려 다음

[1, NaN]

은으로 parseInt는 일반 기능 아닌가?

답변

1

오른쪽, parseInt 정규 함수가 아닙니다. 2 개의 인수가 필요합니다. 첫 번째는 구문 분석 할 숫자이고 두 번째는 기수입니다. Array.map은 값, 인덱스 및 전체 배열을 3을 전달합니다.

각 호출은 다음과 같이 진행됩니다

parseInt('1', 0) // 1 
parseInt('1', 1) // NaN 

이 문제를 해결하려면 수동으로 함수를 호출 할 필요가있다.

console.log(['1','1'].map(function(num){ 
    return parseInt(num); 
})); 
3

parseInt은 여러 매개 변수를 사용합니다. Array.map은 여러 매개 변수로 실행됩니다.

은 다음과 같이 실행할 수 있습니다, 부작용을 피하기 위해 :

console.log(['1','1'].map(function(item){ 
    return parseInt(item); 
})) 
+0

... 심지어 읽을 수도 있습니다. IMHO –

관련 문제