🔍 기본 개념: sort()
란?
자바스크립트에서 배열을 정렬할 때는 Array.prototype.sort()
메서드를 사용한다. 기본적으로는 문자열 기준의 정렬을 수행하며, 숫자 정렬을 위해서는 비교 함수(compare function)를 명시해야 한다.
✨ 기본 정렬 예시
const arr = [10, 5, 3, 8];
arr.sort();
console.log(arr); // [10, 3, 5, 8] - 문자열 기준 정렬
기본 sort()
는 배열 요소를 문자열로 변환한 뒤 유니코드 순서로 정렬하기 때문에 위처럼 예상과 다르게 정렬될 수 있다.
🔧 숫자 정렬을 위한 compareFunction
const arr = [10, 5, 3, 8];
arr.sort((a, b) => a - b); // 오름차순
console.log(arr); // [3, 5, 8, 10]
arr.sort((a, b) => b - a); // 내림차순
console.log(arr); // [10, 8, 5, 3]
비교 함수에서:
a - b
→ 오름차순b - a
→ 내림차순
📌 문자열 정렬 (대소문자 구분 X)
const words = ["Banana", "apple", "Cherry"];
words.sort((a, b) => a.localeCompare(b));
console.log(words); // ["apple", "Banana", "Cherry"]
localeCompare()
는 문자열을 현지화 기준으로 정렬할 때 유용하다.
🧠 객체 배열 정렬
const users = [
{ name: "Tom", age: 32 },
{ name: "Jane", age: 28 },
{ name: "Alex", age: 45 },
];
// 나이순 정렬
users.sort((a, b) => a.age - b.age);
특정 키 값을 기준으로 정렬할 때도 비교 함수를 활용하면 된다.
✅ 정리
sort()
는 원본 배열을 변경한다 (주의!)- 숫자 정렬 시에는 반드시
compareFunction
사용 - 문자열은
localeCompare()
로 정렬 안정성 확보 - 객체 정렬도 비교 함수로 유연하게 처리 가능