Number.isNaN()

문자열로 이루어진 배열이 있습니다.
"123"처럼 숫자로 읽을 수 있는 문자도 있고,
"1a"처럼 숫자로 읽을 수 없는 문자도 있습니다.

이 배열이 주어질 때
숫자로 읽을 수 있는 경우에는 숫자로 바꿔
총 합을 리턴하는 함수 solution을 완성해주세요.

function solution(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    let data = arr[i];
    if (Number.isNaN(data / 3) === false) sum = sum + Number(data);
  }
  return sum;
}
const arr = ["1", "2w", "3", "qwer"];
const result = solution(arr);
console.log(result); // 4

개인적으로는 정말 싫다 진짜 진짜 싫어하는 메소드다
왜냐하면 이것은 숫자가 아니라고(NaN) 분류를 해주는 역할을 하는데

나는 숫자도 분류해주겠지 ㅎㅎ! 라고 생각을 했기 때문이다
NaN은 Not-A-Number라는 의미로 숫자 아님!라는 뜻을 가지고 있는데
정말 그것 자체로만 분류를 해줘서 문제다.


"문자" / 숫자는 ? 문자를 1로 나눌 수 없으니까 NaN이 나온다.
그런데? 자바스크립트 특성상
"숫자" / 숫자 은 숫자가 된다.

그래서 Number.isNaN로는 숫자를 판별할 수 없다.
이게 진짜 문자열인지? 도 확신할 수 없다.
넣는 값이 "5" 이러면 문자열인데 숫자로 치는거니까.
숫자를 판별하려면 tpyeof를 사용하는 수 밖에 없는데...
왜... 개선...안해주지,,,,?

TypeScript에서 해드렸습니다 ^^ 써보시죠! 아 진짜

좋은 웹페이지 즐겨찾기