본문 바로가기
자바스크립트

[자바스크립트] 배열 정렬 sort() 하는 다양한 방법

by 세바개님 2023. 3. 13.

자바스크립트에서 배열을 정렬하는 방법은 여러 가지가 있습니다. 이 중 가장 일반적으로 사용되는 방법은 Array.prototype.sort() 메소드를 사용하는 것입니다.

1. 기본 정렬

sort() 메소드는 기본적으로 문자열로 정렬합니다. 즉, 배열 요소들이 문자열로 변환되어서 알파벳순으로 정렬됩니다. 예를 들어, 다음과 같은 배열이 있다면:

let arr = ["cat", "dog", "elephant", "bee"];


sort() 메소드를 호출하면

arr.sort();


다음과 같이 정렬됩니다:

["bee", "cat", "dog", "elephant"]



하지만 만약 숫자 배열을 정렬해야 한다면, sort() 메소드의 동작 방식이 문제가 될 수 있습니다. 이때는 콜백 함수를 전달하여 정렬 기준을 지정해야 합니다.

2. 숫자 배열 정렬


숫자 배열을 오름차순으로 정렬하려면 다음과 같이 콜백 함수를 작성합니다:

let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

arr.sort(function(a, b) {
  return a - b;
});


이 코드는 배열 arr을 오름차순으로 정렬합니다. 콜백 함수는 두 개의 인수를 받습니다. a와 b는 정렬할 요소 중에서 두 개를 선택합니다. 이 함수는 a - b의 값을 반환합니다. 만약 반환 값이 0보다 작다면 a가 b보다 앞에 위치하게 됩니다. 반대로, 반환 값이 0보다 크다면 a가 b보다 뒤에 위치하게 됩니다. 그리고 반환 값이 0이면 a와 b의 순서는 바뀌지 않습니다.

sort() 메소드는 기본적으로 오름차순으로 정렬됩니다. 만약 내림차순으로 정렬하고 싶다면 다음과 같이 콜백 함수를 작성합니다:

let arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];

arr.sort(function(a, b) {
  return b - a;
});


이 코드는 배열 arr을 내림차순으로 정렬합니다. b - a를 반환하도록 콜백 함수를 작성하면 됩니다.

3. 객체 배열 정렬


객체 배열을 정렬하려면, 정렬 기준을 지정하는 콜백 함수를 작성해야 합니다. 예를 들어, 다음과 같은 객체 배열이 있다고 가정해 봅시다:

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


이 배열을 이름(name)으로 정렬하려면, 다음과 같은 콜백 함수를 작성합니다:

people.sort(function(a, b) {
  if (a.name < b.name) {
    return -1;
  }
  if (a.name > b.name) {
    return 1;
  }
  return 0;
});


이 함수는 두 개의 객체를 인수로 받습니다. 먼저 a.name과 b.name을 비교하여 두 값의 대소관계를 판단합니다. 만약 a.name이 b.name보다 작다면 -1을 반환하고, a.name이 b.name보다 크다면 1을 반환합니다. 그리고 a.name과 b.name이 같다면 0을 반환합니다. 이렇게 반환된 값에 따라 sort() 메소드는 배열을 정렬합니다.

나이(age)로 정렬하려면, 다음과 같이 콜백 함수를 작성합니다:

people.sort(function(a, b) {
  return a.age - b.age;
});


이 함수는 두 개의 객체를 인수로 받습니다. a.age - b.age를 반환하도록 콜백 함수를 작성하면, sort() 메소드는 객체 배열을 나이로 오름차순으로 정렬합니다.

댓글