배열 정렬 메서드
(1) Sort 기본
문자열 정렬:
const fruits = ['banana', 'apple', 'cherry', 'date'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'cherry', 'date']
// 원본 배열이 변경됨
숫자 정렬(주의!):
const numbers = [10, 5, 40, 25, 1000, 1];
// 잘못된 방법
numbers.sort();
console.log(numbers); // [1, 10, 1000, 25, 40, 5]
// 문자열로 변환되어 졍렬됨
// 올바른 방법
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 10, 25, 40, 1000]
(2) 정렬 함수
오름차순:
const numbers = [3, 1, 4, 1, 5, 9, 2, 6];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 1, 2, 3, 4, 5, 6, 9]
내림차순:
const numbers = [3, 1, 4, 1, 5, 9, 2, 6];
numbers.sort((a, b) => b - a);
console.log(numbers); // [9, 6, 5, 4, 3, 2, 1, 1]
작동 원리:
a - b < 0 → a가 앞에 (a < b)
a - b > 0 → b가 앞에 (a > b)
a - b = 0 → 순서 유지 (a = b)
(3) 객체 배열 정렬
숫자 속성으로:
const users = [
{ name: '홍길동', age: 30 },
{ name: '김철수', age: 25 },
{ name: '이영희', age: 28 }
];
// 나이순 (오름차순)
users.sort((a, b) => a.age - b.age);
console.log(users);
// [{name: '김철수', age: 25}, ...]
// 나이순 (내림차순)
users.sort((a, b) => b.age - a.age);
문자열 속성으로:
const users = [
{ name: '홍길동', age: 30 },
{ name: '김철수', age: 25 },
{ name: '이영희', age: 28 }
];
// 이름순 (가나다순)
users.sort((a, b) => {
if (a.name < b.name) return -1; // a -> b
if (a.name > b.name) return 1; // b -> a
return 0; // 유지
});
// 더 간단하게
users.sort((a, b) => a.name.localeCompare(b.name));
(4) 원본 보존하며 정렬
const numbers = [3, 1, 4, 1, 5, 9];
// ❌ sort는 원본 변경
const sorted1 = numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 1, 3, 4, 5, 9] (원본 변경됨!)
// ✅ 복사 후 정렬
const numbers2 = [3, 1, 4, 1, 5, 9];
const sorted2 = [...numbers2].sort((a, b) => a - b);
console.log(numbers2); // [3, 1, 4, 1, 5, 9] (원본 유지)
console.log(sorted2); // [1, 1, 3, 4, 5, 9]'DEV > Modern JavaScript' 카테고리의 다른 글
| 8-5. 배열과 객체 메서드 Part 2(Map과 Set) (0) | 2026.06.23 |
|---|---|
| 8-4. 배열과 객체 메서드 Part 2(객체 메서드(Object)) (0) | 2026.06.23 |
| 8-2. 배열과 객체 메서드 Part 2(some과 every) (0) | 2026.06.23 |
| 8-1. 배열과 객체 메서드 Part 2(reduce)⭐️ (0) | 2026.06.23 |
| 7-4. 배열과 객체 메서드 Part 1(find와 findIndex)⭐️ (0) | 2026.06.23 |