const points = [40, 100, 1, 5, 2, 25, 10];
points.sort();
console.log(points); // [1, 10, 100, 2, 25, 40, 5]
위의 예시처럼 숫자 요소들로 이루어진 배열은 의도한 대로 정렬되지 않는다.
sort 메서드의 기본 정렬 순서는 유니코드 코드 포인트의 순서를 따르기 때문이다.
즉, 요소가 숫자 타입이라 할지라도 배열의 요소를 일시적으로 문자열로 변환한 후 유니코드 코드 포인트의 순서를 기준으로 정렬한다.
따라서, 아래와 같은 방법을 통해 숫자를 정렬한다.
const points = [40, 100, 1, 5, 2, 25, 10];
points.sort((a, b) => a - b);
console.log(points); // [1, 2, 5, 10, 25, 40, 100]
points.sort((a, b) => b - a);
console.log(points); // [100, 40, 25, 10, 5, 2, 1]
출처
모던 자바스크립트 Deep Dive - 저자 이웅모