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
를 반환하기도 하는구나..!