문자열로 취급하고 사전식으로 정렬합니다.const numbers = [10, 2, 5];
numbers.sort();
console.log(numbers); // 출력: [10, 2, 5] (문자열로 정렬)
숫자나 특정한 기준으로 배열을 정렬하려면 비교 함수를 제공해야 합니다.
비교 함수는 두 개의 인수 a와 b를 받고 다음 값 중 하나를 반환합니다.
예를 들어, 숫자를 오름차순으로 정렬하려면 (a, b) => a - b와 같은 비교 함수를 사용합니다.
const numbers = [10, 2, 5];
numbers.sort((a, b) => a - b);
console.log(numbers); // 출력: [2, 5, 10] (숫자 오름차순으로 정렬됨)
위 코드에서 (a, b) => a - b는 두 숫자의 차이를 계산하여 a가 b보다 크면 양수, 작으면 음수, 같으면 0을 반환합니다.
[1, 2, 3, 2] 배열을 sort((a, b) => a - b)로 정렬하는 경우,
3과 2를 비교.
여기서 2와 2는 비교할 필요가 없습니다.
a - b = 0인 경우 정렬 알고리즘이 순서를 유지하기 때문에, 추가적인 처리가 필요하지 않습니다.
const numbers = [5, 2, 9, 1, 5, 6];
numbers.sort((a, b) => a - b);
console.log(numbers); // 출력: [1, 2, 5, 5, 6, 9]
const numbers = [5, 2, 9, 1, 5, 6];
numbers.sort((a, b) => b - a);
console.log(numbers); // 출력: [9, 6, 5, 5, 2, 1]
const words = ['apple', 'banana', 'kiwi', 'cherry', 'strawberry'];
words.sort((a, b) => a.length - b.length);
console.log(words); // 출력: ['kiwi', 'apple', 'cherry', 'banana', 'strawberry']
const people = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 20 },
{ name: 'Charlie', age: 30 }
];
people.sort((a, b) => a.age - b.age);
console.log(people);
// 출력: [{ name: 'Bob', age: 20 }, { name: 'Alice', age: 25 }, { name: 'Charlie', age: 30 }]
특정 속성을 기준으로 정렬하려면 해당 속성의 값을 비교하는 함수를 정의합니다.
const fruits = ['banana', 'apple', 'cherry', 'date'];
fruits.sort((a, b) => b.localeCompare(a));
console.log(fruits); // 출력: ['date', 'cherry', 'banana', 'apple']
const mixedCase = ['banana', 'Apple', 'cherry', 'Date'];
mixedCase.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));
console.log(mixedCase); // 출력: ['Apple', 'banana', 'cherry', 'Date']
모든 문자열을 소문자(또는 대문자)로 변환한 뒤 비교합니다.
const students = [
{ name: 'Alice', grades: { math: 90, english: 85 } },
{ name: 'Bob', grades: { math: 80, english: 95 } },
{ name: 'Charlie', grades: { math: 85, english: 90 } }
];
students.sort((a, b) => a.grades.math - b.grades.math);
console.log(students);
// 출력: [{ name: 'Bob', ... }, { name: 'Charlie', ... }, { name: 'Alice', ... }]
중첩된 객체 속성을 기준으로 정렬하려면 경로를 따라가면서 값을 비교합니다.
name을 기준으로 먼저 정렬하고, age를 기준으로 두 번째로 정렬
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 20 },
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 }
];
users.sort((a, b) => {
if (a.name === b.name) {
return a.age - b.age; // 같은 이름이면 나이로 정렬
} else {
return a.name.localeCompare(b.name); // 이름으로 정렬
}
});
console.log(users);
// 출력: [{ name: 'Alice', age: 25 }, { name: 'Alice', age: 30 }, { name: 'Bob', age: 20 }, { name: 'Bob', age: 25 }]