[javascript] 자바스크립트 sort() 메소드의 파라미터로 비교 함수 사용하기

자바스크립트의 배열을 정렬할 때, sort() 메소드를 사용합니다. 이 때, 사용자 정의 기준에 따라 정렬하려면 비교 함수(compare function)를 sort() 메소드의 파라미터로 전달해야 합니다.

이 글에서는 비교 함수를 사용하여 다양한 방식으로 배열을 정렬하는 방법에 대해 알아보겠습니다.

기본적인 사용 방법

sort() 메소드를 호출할 때 아무런 인자도 전달하지 않으면, 배열은 기본적으로 유니코드 코드 포인트 순서로 정렬됩니다. 예를 들어, 숫자는 문자열로 변환되어 정렬됩니다.

const numbers = [4, 2, 5, 1, 3];
numbers.sort();
console.log(numbers); // [1, 2, 3, 4, 5]

비교 함수 사용하기

배열을 특정 기준에 따라 정렬하려면 비교 함수를 사용해야 합니다. 비교 함수는 두 개의 인자를 받고, 이 두 개의 인자를 비교하여 정렬 순서를 결정합니다.

다음은 간단한 비교 함수의 예시입니다.

const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 4, 5]

이 비교 함수는 두 개의 숫자를 받아서 첫 번째 값에서 두 번째 값을 뺀 결과를 반환합니다. 반환 값이 0보다 작으면 a를 b보다 낮은 인덱스로 정렬하고, 0보다 크면 a를 b보다 높은 인덱스로 정렬합니다.

내림차순 정렬

내림차순으로 정렬하려면, 비교 함수에서 두 값을 반대로 빼주면 됩니다.

const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => b - a);
console.log(numbers); // [5, 4, 3, 2, 1]

객체의 특정 속성 기준으로 정렬

객체의 배열을 특정 속성을 기준으로 정렬할 수도 있습니다. 이때는 비교 함수에서 객체의 해당 속성을 비교하면 됩니다.

const people = [
  { name: 'John', age: 30 },
  { name: 'Alice', age: 25 },
  { name: 'Bob', age: 35 },
];

people.sort((a, b) => a.age - b.age);
console.log(people);
// [ { name: 'Alice', age: 25 },
//   { name: 'John', age: 30 },
//   { name: 'Bob', age: 35 } ]

정리

sort() 메소드를 사용하여 배열을 정렬할 때 비교 함수를 활용하면 다양한 기준으로 배열을 정렬할 수 있습니다. 이를 활용하여 배열을 유연하게 정렬하여 자바스크립트 프로그래밍을 보다 효율적으로 수행할 수 있습니다.

이상으로 자바스크립트의 sort() 메소드를 사용하여 비교 함수를 전달하는 방법에 대해 알아보았습니다.