Array = [ 1000, 2, 1]
Array.sort()의 결과는 무엇일까?
자연스러운 논리로는 Array = [1, 2, 1000]이 되어야 한다.
하지만 JavaScript는 Array = [1, 1000, 2]를 반환한다.
이는 JavaScript의 sort()함수는 “문자열의 유니코드 코드 포인트”를 따르기 때문이다.
의도한 결과를 만들기 위해서는 compareFunction을 제공해야 한다.
compareFunction의 판단 논리는 다음과 같고, 이러한 반환 값에 따라 정렬된다.
만약 숫자를 비교한다면 compareFunc를 다음과 같이 정의할 수 있다
function compareNumbers(a, b) {
return a - b;
}
let array = [14, 2, 5, 1, 3]
// 방법 1
function compareNumbers(a, b) {
return a - b;
}
array.sort(compareNumbers);
// 방법 2
array.sort((a, b) => a - b);
+) map을 사용한 정렬
compareFunction은 배열 내의 요소마다 여러 번 호출되므로 높은 오버헤드가 발생할 수 있음https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort