문자열 다루기 기본(프로그래머스)
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
function solution(s) {
var answer = false;
var len = s.length;
s = s.split('').map(Number);
if(len === 4 || len === 6){
answer = true;
s.forEach((a) => {
if(isNaN(a)){
return answer = false;
}
});
}
return answer;
}
이 문제를 풀기 위해 문자는 숫자형으로 바꾸려 할 때 NaN으로 변환되는 것을 이용했습니다.
그런데 a의 값이 NaN일 경우를 위해 a === NaN을 사용하였지만 항상 false가 출력되었습니다.
NaN은 특별한 값으로, 자기 자신과 비교해도 false를 반환하기 때문에 NaN인지 판별하려면 isNaN() 함수를 사용해야 합니다.
console.log(NaN === NaN); // false
console.log(NaN == NaN); // false
console.log(isNaN(NaN)); // true
NaN - JavaScript | MDN
전역 NaN 속성은 Not-A-Number(숫자가 아님)를 나타냅니다.
developer.mozilla.org