sort
정렬을 하다가 숫자 정렬 시에 원하는 형식으로 정렬되지 않아서 정리해본다.
sort() 메서드는 배열 안의 원소들을 정렬하는 함수로 기본 정렬 순서는 문자열의 유니코드를 따른다.
arr.sort([compareFunction])
compareFunction
이 제공되지 않으면 요소를 문자열로 변환하고 유니코드 순서로 비교하여 정렬된다는 점을 주의!
그래서 숫자 비교 시 원하는대로 정렬이 이루어지지 않은거였음.
var stringArray = ['orange', 'apple', 'banana']
stringArray.sort();
// apple, banana, orange
var number = [1, 30, 4, 21, 600];
/* 에러 */
number.sort();
// [1, 21, 30, 4, 600]
// ASCII 문자 순서로 정렬되어 원하는 정렬값이 나오지 않음
/* 정상 */
number.sort(function(a,b) { // 오름차순 정렬
return a-b;
});
// [1, 4, 21, 30, 600]
/* 정상 */
number.sort(function(a,b) { // 내림차순 정렬
return b-a;
});
// [600, 30, 21, 4, 1]