TIL- filter와 0

4623 단어 ES6JavaScriptES6

오늘 프로그래머스에서 문제를 풀면서 filter로 숫자만 걸러낼려고 했다.

//예시
[1,2,3,'1','a',NaN,0].filter((v)=> Number(v));
//result:[1, 2, 3, "1"]

문제

나는 0도 함께 숫자로서 return받기를 원했는데 처음에 왜 안나오는지 이해할 수 없었다.

이유

filter는 조건이 참인 값만 return해주는데 0false 이기때문이다

해결 방법

[1, 2, 3, "1", "a", NaN, 0].filter((v) => Number.isFinite(v));
// [1, 2, 3, 0]

설명

Number.isFinite()는 주어진 값이 유한수인지 판별하는 함수이다.

Mdn 예시

console.log(Number.isFinite(1 / 0));
// expected output: false

console.log(Number.isFinite(10 / 5));
// expected output: true

console.log(Number.isFinite(0 / 0));
// expected output: false

Number.isFinite() -Mdn

좋은 웹페이지 즐겨찾기