sort()
sort() 란?
JavaScript에 내장되어있는 함수로 배열을 정렬하고 싶을 경우 사용한다. (오름차순, 내림차순)
/* sort() 형식 */
function callback() { ... }
배열.sort();
배열.sort(callback);
- sort의 인자(Argument)는 전달해도 되고, 안 해도 된다.
1. 1차원 배열 정렬 방법
const arr1 = [2, 1, 3];
const arr2 = ['banana', 'apple', 'orange']
arr1.sort(); // [1, 2, 3]
arr2.sort(); // ['apple', 'banana', 'orange']
- sort함수에 파라미터가 없으면, 유니코드 순서에 따라서 오름차순으로 정렬된다.
- 숫자인 경우 배열 요소를 문자열로 캐스팅하고 변환된 문자열을 비교하여 순서를 결정한다.
- 배열의 요소가 undefined인 경우에는 문자열로 변환되지 않고, 배열의 맨 끝으로 정렬된다.
1-1) 콜백 함수를 통한 정렬
const arr = [2, 1, 3, 10];
// 유니코드 정렬
arr.sort(); // [1, 10, 2, 3]
// 오름차순 정렬
arr.sort((a, b) => a-b) // [1, 2, 3, 10]
// 내림차순 정렬
arr.sort((a,b) => b-a) // [10, 3, 2, 1]
- 유니코드 순서로 오름차순 정렬이기 때문에 콜백함수로 return값을 주어야 원하는 결과를 얻을 수 있다.
- 두 숫자의 차가 양수, 음수를 판단하여 정렬할 수 있다.
2. 2차원 배열 정렬 방법
const arr = [[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]];
// 오름차순
arr.sort((a, b) => a[0] + a[1] - (b[0] + b[1]));
console.log(arr);
// [[ 2, 2 ], [ 4, 3 ], [ 4, 5 ], [ 6, 6 ], [ 10, 3 ]]
// 내림차순
arr.sort((a, b) => b[0] + b[1] - (a[0] + a[1]));
console.log(arr);
// [[ 10, 3 ], [ 6, 6 ], [ 4, 5 ], [ 4, 3 ], [ 2, 2 ]]
// arr[0]이 같을 경우 arr[1] 기준으로 오름차순 정렬
arr.sort((a, b) => {
if (a[0] === b[0]) {
return a[1] - b[1];
} else {
return a[0] - b[0];
};
});
console.log(arr)
// [[ 2, 2 ], [ 4, 3 ], [ 4, 5 ], [ 6, 6 ], [ 10, 3 ]]
2-1) 2차원 배열 문자 정렬 방법
let str = [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]];
let strSort = str.sort((a, b) => {
if (a[0] === b[0]) {
return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0;
} else {
return -1;
};
});
반응형
'JavaScript' 카테고리의 다른 글
배열의 특정 값 (includes, findIndex, indexOf) 찾는 방법 (0) | 2022.12.18 |
---|---|
Map, 배열의 최대 값(Max) 최소 값(Min) 구하기 (0) | 2022.12.17 |
[JavaScript] JavaScript로 힙(Heap) 구현하기 (0) | 2022.12.10 |
[JavaScript] Set 객체(Set Object) 메서드 및 반복문 사용 방법 (0) | 2022.12.02 |
[JavaScript] Map 객체(Map Object) 메서드 및 반복문 사용 방법 (0) | 2022.12.01 |