문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한 사항
s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
"a234" false
"1234" true
function solution(s) {
let answer = []
if (s.length === 4 || s.length === 6) {
for (let c of s) {
answer.push(Number(c))
}
} else return false
return answer.includes(NaN) ? false : true
}
처음에 풀때 길이가 4 또는 6만 올 수 있다는 부분을 잘 못 읽어서
4 이상 6 이하로 풀었더니 자꾸 값은 잘나오는에 답이 틀렸다고 해서 몇 번을 새로 시도했었다. 문제는 꼼꼼히 읽자!
저 이유를 모르고 다른 방법으로 풀다가 알게된건데
isNaN 이라는 함수는 Not a Number로
매개변수가 숫자가 아닐 경우 true를 리턴하고,
매개변수가 숫자일 경우 false를 리턴한다.
자바스크립트에서는 숫자에 e가 붙으면 지수로 인식하여 문자인 경우도 그냥 숫자로 인식한다는 내용을 알게되었다. 이 부분도 조심해서 써야겠다.
그리고 Number(변환할 문자)를 적용할때 숫자가 아닌걸 넣는 경우에도 typeof로 확인하면 number 값이 나온다.