에러 배경
코테를 진행하는 도중 문자열을 배열로 만들고 그 값들을 숫자로 바꿔서 사용하려고 map(parseInt)를 사용하는 상황이었습니다.
에러 그 잡채
숫자로 결과가 나오지 않고 숫자가 아님을 의미하는 NaN이 결과로 계속 출력되었습니다.
`2 1 5`.trim().split(" ").map(parseInt);
// 결과
// [2, NaN, NaN]
해결 과정
해결1. map(Number)
`2 1 5`.trim().split(" ").map(Number);
// 결과
// [2, 1, 5]
해결2. map(el => parseInt(el))
`2 1 5`.trim().split(" ").map(el=>parseInt(el));
// 결과
// [2, 1, 5]
정리
에러 자체는 간단하게 해결할 수 있는 에러였는데, 이번 에러에서 중요한 것은 발생한 원인입니다.
에러의 원인
map에서 제공하는 인자와 parseInt에서 받아가는 인수의 문제입니다.
map((배열의 원소, 인덱스, 기존 배열)=>{});
parseInt(파싱할 값, 진법);
/*
map.(parseInt);으로 사용할 경우
map((el,i,arr)=>parseInt(el,i,arr));와 같은 요청이다.
예를 들면
`2 1 5`.split(' ').map((el, i, arr) => {
console.log(el, i, arr);
console.log(parseInt(el, i, arr));
});의 결과는
2 0 [ '2', '1', '5' ]
2
1 1 [ '2', '1', '5' ]
NaN
5 2 [ '2', '1', '5' ]
NaN
이 된다.
*/
결과적으로 map을 통해 배열의 값들을 숫자로 바꿀 때는 Number를 사용하거나 parseInt의 인수를 정확히 넣어주어야 합니다.
'에러' 카테고리의 다른 글
| [MySQL Error 1061] 아니 외래키 이름도 바꿨는데 또 에러야? (0) | 2024.05.28 |
|---|---|
| [MySQL Error 1005 - errno: 121] 외래키 설정이 안되네? (1) | 2024.05.28 |
| [Node.js ERR_HTTP_HEADERS_SENT 에러] 헤더를 세팅하지 말라고? (0) | 2024.05.20 |
| [mariadb 1175 에러] 업데이트하는데 키를 이용하라고? (0) | 2024.05.09 |
| [docker-mariadb와 Node.js, mysql workbench 연동 에러] 왜 연결이 안돼... (0) | 2024.05.06 |