개발일지/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로 구현하는것이 시간복잡도가 더 낮다.