1️⃣ 기본 문법
let arr1 = ["carrot", "apple", "banana"];
let arr2 = [10, 2, 33, 1];
arr1.sort();
arr2.sort();
console.log(arr1);
console.log(arr2);
["apple", "banana", "carrot"]
[1, 10, 2, 33]
2️⃣ 특징
- 기본적으로 문자열 기준으로 정렬 (기본 문법 예시)
- 원본 배열이 변경
- ES2019부터 안정 정렬(stable sort): 값이 같다고 판단되면 기존 순서 유지
- 시간복잡도:
O(nlogn)
3️⃣ 예시
(1-1) - 숫자 오름차순
const nums = [10, 2, 33, 1]
nums.sort((a, b) => a - b);
console.log(nums);
[1, 2, 10, 33]
(1-2) - 숫자 내림차순
const nums = [10, 2, 33, 1]
nums.sort((a, b) => b - a);
console.log(nums);
[33, 10, 2, 1]
(2-1) - 객체 정렬 [단일키]
const users = [
{ name: "Park", age: 24 },
{ name: "Lee", age: 19 },
{ name: "Kim", age: 24 },
];
users.sort((a, b) => a.age - b.age);
console.log(users);
[
{ name: "Lee", age: 19 },
{ name: "Park", age: 24 },
{ name: "Kim", age: 24 }
]
(2-2) - 객체 정렬 [다중키]
const users = [
{ name: "Kim", age: 24 },
{ name: "Lee", age: 19 },
{ name: "Park", age: 24 },
];
users.sort((a, b) => (a.age - b.age) || a.name.localeCompare(b.name));
console.log(users);
[
{ name: "Lee", age: 19 },
{ name: "Kim", age: 24 },
{ name: "Park", age: 24 }
]
4️⃣ 주의할 점
- 기본 정렬은 문자열 기준
- 원본 변형 가능
(불변이 필요하다면 toSorted() 또는 복사 후 sort 사용)
async comparator 금지
BigInt는 뺄셈 비교 주의
(만약 사용한다면 아래와 같이 비교자 작성)
const bigs = [3n, 1n, 2n];
bigs.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
undefined/빈 슬롯은 기본 정렬에서 뒤로 감
(comparator를 쓰면 직접 처리해야 함)