개발일지/Javascript
조건 실수
zzoo-ppaamm
2022. 1. 4. 11:15
n.toString(2).split('').map(v => v === 1 ? 0 : 1).join('');
BinaryString값의 complement를 구하기 위해 위와 같이 구현하였다.
하지만 기대하는 결과 값이 나오지 않았다.
원인은 === 에 있었다.
split 까지 한 결과는
[ "1", "0", "1" ]
이런 식이다.
String 값과 Number값을 비교해서 false에 해당하는 값으로만 나온 것이었다.
==은 값만
===은 type까지 비교한다.
수정해보면
n.toString(2).split('').map(v => v == 1 ? 0 : 1).join('');
혹은
n.toString(2).split('').map(v => v === "1" ? 0 : 1).join('');
로 해야할 것이다.
참고로 complement 구할거면 이방법보다는 bit mask로 구현하는것이 시간복잡도가 더 낮다.