var sortByBits = function(arr) {
return arr.sort((a,b) => a.toString(2).replaceAll('0', '').length - b.toString(2).replaceAll('0', '').length || a - b)
};
일단 문제를 간단하게 설명하면
- 정수 배열이 주어진다. 그리고 정수를 2진수로 변환했을때 값이 1인 비트의 개수가 많은 순서(오름차순)으로 정렬하는데 이 때 개수가 같을 경우 큰 순서대로 정렬하라
풀이 방법은 간단하다.
정렬을 위해 sort 메소드를 사용한다. 값이 1인 비트의 개수를 구하기 위해서 정수를 toString 메소드를 사용해서 2진수로 변환한다. 반환값이 문자열이기때문에 replaceAll 메소드를 사용해서 문자열 0을 제거해서 1만 남긴다. 이것의 길이가 1의 개수가 된다.
개수가 같은 경우를 처리하기위해 OR 연산자를 사용한다.