function solution(code) {
let mode = 0
const ret = code.split('').filter((x,idx)=>{
if (x === '1') {
mode = mode === 0 ? 1 : 0
return false
}
if (mode) {
return idx % 2 === 1
}
return idx % 2 === 0
}).join('')
const answer = ret.length !== 0 ? ret : "EMPTY";
return answer
}
return false : filter 함수 내 x === "1" 인 경우 "1" 은 포함시키지 않기 위함mode = mode === 0 ? 1 : 0 : mode의 값이 0인 경우 1로 변환, 1인 경우 0으로 변환시키기 위한 식if (mode) : 여기서 JS의 타입강제변환 규칙이 적용된다.💡 JavaScript에서 숫자
1은참(true)으로,0은거짓(false)으로 간주된다. 이는 JavaScript의 타입 강제변환(type coercion)규칙 에 따른 것으로, 불리언 컨텍스트(예: 조건문)에서1을 사용하면참으로 평가되고,0을 사용하면거짓으로 평가된다.
false를 반환하는 이유와mode를 갖고 조건문을 시행하는 게 이해가 되지 않아 검색해 보니 JS에 타입강제변환 규칙이란 게 존재한다는 것을 깨닫게 되었다.
또한,filter함수 사용 시 조건에 만족하는 해당 값을 포함시키지 않기 위해false를 반환하기도 하는구나..!