언어/Javascript
[JS] 배열 정렬 메소드 sort() / 2차원 배열 정렬
thinktank911
2025. 9. 18. 18:44
sort() 메소드는 배열의 요소를 정렬하는 함수이다.
기본 문법
arr.sort([compareFunction])
- compareFunction (선택): 정렬 기준을 정하는 함수. 생략하면 배열의 각 요소들은 문자열로 변환되며 유니코드 코드포인트 순서, 즉 사전식 정렬이 된다.
반환값
배열이 복사되는 것이 아니라 기존 배열이 정렬된다.
문자열 정렬
- compareFunction 없이 사전식 정렬
let fruits = ["banana", "apple", "cherry"];
fruits.sort();
console.log(fruits); // ["apple", "banana", "cherry"]
숫자 오름차순 정렬
- compareFunction 이 음수값 리턴
let numbers = [10, 5, 20, 1];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 10, 20] ✅
숫자 내림차순 정렬
- compareFunction 이 양수값 리턴
- 반환값이 0이면 순서 유지
numbers.sort((a, b) => b - a);
console.log(numbers); // [20, 10, 5, 1]
2차원 배열 정렬
기본예제
- 여기서 arr은 3개의 배열 [x, y]를 요소로 갖는 2차원 배열
let arr = [
[2, 5],
[1, 7],
[3, 2]
];
첫번째 요소로 배열 정렬
- a[0] - b[0] → 첫 번째 값(x)을 기준으로 오름차순 정렬
- 내림차순으로 하려면 b[0] - a[0]
arr.sort((a, b) => a[0] - b[0]);
console.log(arr);
// [[1,7], [2,5], [3,2]]
두번째 요소로 배열 정렬
- a[1] - b[1] → 두 번째 값(y)을 기준으로 오름차순
arr.sort((a, b) => a[1] - b[1]);
console.log(arr);
// [[3,2], [2,5], [1,7]]
다중 기준 정렬 (첫 번째 요소 기준, 같으면 두 번째 기준)
- 조건문을 이용해 다중 기준 정렬 가능
let arr2 = [
[2, 5],
[1, 7],
[2, 3],
[1, 2]
];
arr2.sort((a, b) => {
if (a[0] === b[0]) {
return a[1] - b[1]; // 첫 번째 값이 같으면 두 번째 값 기준
} else {
return a[0] - b[0]; // 첫 번째 값 기준
}
});
console.log(arr2);
// [[1,2], [1,7], [2,3], [2,5]]