Sort 메서드
Coddy JavaScript 여정의 논리 & 흐름 섹션에 포함된 레슨 — 65개 중 57번째.
sort() 메서드는 배열의 요소를 제자리에서 정렬하고 정렬된 배열을 반환합니다. 기본적으로, 요소를 문자열로 취급하여 알파벳 오름차순으로 정렬합니다.
기본 구문은 다음과 같습니다:
array.sort([compareFunction])비교 함수를 사용하지 않은 예시:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']경고: 비교 함수가 없으면 숫자가 예상대로 정렬되지 않습니다:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (올바르지 않은 숫자 정렬)숫자를 올바르게 정렬하거나 사용자 정의 정렬을 구현하려면 비교 함수를 사용해야 합니다.
compare 함수는 다음을 반환해야 합니다:
- a가 b보다 앞에 와야 하는 경우 음수
- b가 a보다 앞에 와야 하는 경우 양수
- 두 값이 같은 경우 0
비교 함수를 사용하여 숫자를 정렬하는 방법은 다음과 같습니다:
// 오름차순 정렬
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]// 내림차순 정렬
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]객체를 정렬하는 또 다른 예시입니다:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// 나이순으로 정렬 (오름차순)
people.sort((a, b) => a.age - b.age);// 이름으로 정렬 (localeCompare()를 사용하여 사전순으로 정렬)
people.sort((a, b) => a.name.localeCompare(b.name));챌린지
쉬움문자열 배열을 인자로 받아, 해당 문자열들을 길이 기준 오름차순으로 정렬한 새 배열을 반환하는 sortByLength라는 이름의 함수를 생성하세요. 만약 두 문자열의 길이가 같다면, 알파벳 순으로 정렬되어야 합니다.
치트 시트
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 기본적으로, 이 메서드는 요소를 문자열로 취급하여 알파벳 순서로 정렬합니다.
기본 구문:
array.sort([compareFunction])문자열 정렬:
const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'mango', 'orange']주의: 비교 함수(compare function) 없이는 숫자가 올바르게 정렬되지 않습니다:
const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers); // [1, 100000, 21, 30, 4] (incorrect)비교 함수 반환 값:
- a가 b보다 앞에 와야 하는 경우 음수 값
- b가 a보다 앞에 와야 하는 경우 양수 값
- 두 값이 같은 경우 0
숫자를 올바르게 정렬하기:
// 오름차순 정렬
numbers.sort((a, b) => a - b);
// 내림차순 정렬
numbers.sort((a, b) => b - a);객체 정렬하기:
const people = [
{ name: 'John', age: 30 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 }
];
// 나이순으로 정렬
people.sort((a, b) => a.age - b.age);
// 이름순으로 알파벳 정렬
people.sort((a, b) => a.name.localeCompare(b.name));직접 해보기
function sortByLength(arr) {
return arr.sort((a, b) => {
// 여기에 코드를 작성하세요
})
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.