
function solution(s) {
var answer = true;
if (s.length === 4 || s.length === 6){
var arr = Array.from(s).map( x => {
let num = parseInt(x);
answer = isNaN(num) ? false : true ;
});
console.log(arr);
}
return answer;
}
문제점
1) map 함수는 배열의 각 요소를 변환하여 새로운 배열을 만듭니다. 하지만 여기서는 배열을 변환하지 않고, 단순히 answer 변수를 업데이트하려고 합니다.
2) answer 변수는 map 함수의 각 반복에서 계속해서 업데이트되기 때문에, 최종적으로 숫자가 아닌 문자가 있는 경우에도 마지막 값이 숫자라면 answer가 true로 설정될 수 있습니다.
3) parseInt 함수는 문자열의 첫 부분이 숫자인 경우 숫자를 반환하고, 그렇지 않으면 NaN을 반환합니다. Number 함수를 사용하면 숫자가 아닌 모든 문자를 NaN으로 변환할 수 있습니다.
========> 뭔가 더 어려운 함수로 풀어보려다가 미궁에 빠졌다...
function solution(s) {
var answer = true;
if (s.length === 4 || s.length === 6){
for (i=0; i<s.length; i++){
if (isNaN(s[i])){
answer = false;
break;
}
}
}
else
answer = false;
return answer;
}