parseInt가 Array#map을 사용하여 NaN을 반환하는 이유는 무엇입니까?
Mozilla 개발자 네트워크에서는 [1,4,9].map( Math.sqrt)는 [1,2,3]을 반환합니다. 그러나 map을 사용하여 배열 리터럴 ['1','2','3']에 parsInt를 적용하면 [1, NaN, NaN]이 생성됩니다. 이 동작은 Firefox 3.0.1 및 Chrome 0.3에서 발생합니다.
근본 원인
세 가지 매개변수(요소 값, 해당 인덱스와 순회된 배열 객체입니다. map 내에서 parseInt가 호출되면 인덱스는 두 번째 인수가 되며, 이는 기수(변환되는 숫자 체계의 기준)로 해석됩니다.
앞서 언급한 경우, parInt는 기수 값 0으로 호출됩니다. , 1 및 2입니다. 앞에 0이 없는 정수의 경우 기본적으로 기수는 10입니다. 그러나 기수 1은 유효하지 않으며 기수 2는 숫자 3을 지원하지 않습니다. 따라서 parseInt는 두 번째 및 세 번째 요소에 대해 NaN을 반환합니다.
해결책
To 이를 수정하려면 래퍼 기능을 활용할 수 있습니다.
['1','2','3'].map(function(num) { return parseInt(num, 10); });
또는 ES2015 :
['1','2','3'].map(num => parseInt(num, 10));
기수를 10으로 명시적으로 제공함으로써 parseInt가 문자열을 밑이 10인 정수로 올바르게 해석하도록 보장합니다.
위 내용은 `Array#map`과 함께 사용할 때 `parseInt`가 `NaN`을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!