
Javascript에서 배열을 정렬하기 위해서는 sort() 함수를 사용한다.
arr.sort([compareFunction])
compareFunction이 생략될 경우 , 배열의 요소들은 모두 문자열 취급되며, 유니코드 값 순서대로 정렬된다.
const arr1 = [2, 1, 3];
const arr2 = [2, 1, 3, 10];
const arr3 = ['banana', 'apple', 'orange'];
arr1.sort(); // [1, 2, 3]
arr2.sort(); // [1, 10, 2, 3]
arr3.sort(); // ['apple', 'banana', 'orange']
배열의 숫자들을 유니코드 순서가 아닌, 숫자 크기 순서대로 정렬하기 위해서 sort() 함수의 파라미터로 함수를 정의한다.
const arr = [2, 1, 3, 10];
arr.sort(function(a, b) {
if(a > b) return 1;
if(a === b) return 0;
if(a < b) return -1;
});
// [1,2,3,10]
arr.sort((a,b) => a-b); // [1,2,3,10]
arr.sort((a,b) => b-a); // [10,3,2,1]
sort() 함수로 문자열을 정렬하면, 유니코드가 대문자가 소문자보다 앞서기 때문에 대문자가 소문자보다 앞에 오도록 정렬된다.
(숫자 > 영어 대문자 > 영어 소문자 > 한글)
const arr = ['Banana', 'apple', 'orange'];
arr.sort(); // ['Banana', 'apple', 'orange']
toUpperCase(), toLowerCase() 메서드를 사용해서 대문자 또는 소문자로 바꾼 후 비교하여 정렬한다.
arr.sort(function(a, b) {
const upperCaseA = a.toUpperCase();
const upperCaseB = b.toUpperCase();
if(upperCaseA > upperCaseB) return 1;
if(upperCaseA < upperCaseB) return -1;
if(upperCaseA === upperCaseB) return 0;
});