자바스크립트 내장 함수에는 sort()가 있다. 명칭 그대로 배열 안의 원소를 정렬하는 함수이다.
sortFunction 인수에 함수를 지정하면 아래의 값 중 하나가 반환된다.
const fruit = ['apple','mango', 'cherry']
/* 일반적인 방법 */
fruit.sort();
> ['apple', 'cherry', 'mango']
const number = [8, 20, 16, 1, 35, 27];
/* 오류 */
number.sort()
> [1, 16, 20, 27, 35, 8] // ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
/* 정상 동작 */
number.sort(function(a, b){ // 오름차순
return a - b;
})
> [1, 8, 16, 20, 27, 35]
number.sort(function(a, b){// 내림차순
return b - a
})
> [35, 27, 20, 16, 8, 1]
const student = [
{ name : "재석", age : 21},
{ name : "광희", age : 25},
{ name : "형돈", age : 13},
{ name : "명수", age : 44}
]
student.sort(function(a, b){ // 오름차순
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0
})
> 광희, 명수, 재석, 형돈
student.sort(function(a, b){ // 내림차순
return a.name > b.name ? -1 : a.name < b.name ? 1 : 0
})
> 형돈, 재석, 명수, 광희
/* 나이순으로 정렬 */
student.sort(function(a, b){ // 오름차순
return a[sortingField] -b[sortingField]
})
> 13, 21, 25, 44
student.sort(function(a, b){
return b[sortingField] - a[sortingField]
})
> 44, 25, 21, 13
⚡️ 정렬 알고리즘
student.sort(function(a, b){
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
})
-1: a를 b보다 앞에 위치시킵니다. 즉, a가 b보다 작은 값으로 간주
1: a를 b보다 뒤에 위치시킵니다. 즉, a가 b보다 큰 값으로 간주
0: a와 b의 순서를 변경하지 않습니다. 즉, a와 b가 같은 순위로 간주