Menu
Coddy logo textTech

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));
challenge icon

챌린지

쉬움

문자열 배열을 인자로 받아, 해당 문자열들을 길이 기준 오름차순으로 정렬한 새 배열을 반환하는 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) => {
        // 여기에 코드를 작성하세요
    })
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨