JS에서 array.sort()를 그냥 쓰면, array에 들어있는 원소들을 문자열로 변환하여 유니코드 순서대로 정렬을 한다. 이렇게 되면 문제점은 숫자를 오름차순이나 내림차순으로 정렬하려고 할 때, 예상과는 다른 결과가 나온다는 것이다.
sort()안에 넣어줄 콜백함수를 compareFunction()이라고 하면,
compareFunction(a,b)의
리턴값이 음수(ex. -1)이면 a가 b보다 앞에 정렬되고
리턴값이 0이면 바뀌지 않고
리턴값이 양수(ex. 1)이면 b가 a보다 앞에 정렬된다.
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
그래서 숫자가 원소로 들어있는 배열을 예시로 들면,
var numbers = [4, 2, 5, 80, 9];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
// [2, 4, 5, 9, 80]
그러니 주의할 것.