자바스크립트에서 여러 조건으로 정렬을 해보자

여러 조건으로 정렬하는 경우가 많진 않은데? 많나? 아무튼 자바스크립트에서 한번 해보자

자바스크립트에서 여러 조건으로 정렬을 해보자

자바스크립트에서 여러 정렬 조건을 사용하는 방법에 대해서 알아보자. Array.prototype.sort() 함수를 사용하여 배열을 정렬할 수 있다. 이 함수는 하나의 매개 변수를 받는데, 이 매개 변수는 배열의 요소를 비교하여 정렬 순서를 결정하는 함수이다. 이때, 함수가 반환하는 값에 따라 정렬 순서가 결정된다. 반환 값이 음수면 첫 번째 요소가 두 번째 요소보다 작다는 것을 의미하고, 반환 값이 양수면 첫 번째 요소가 두 번째 요소보다 크다는 것을 의미한다.

따라서, 여러 정렬 조건을 사용하려면 정렬 함수에서 여러 개의 조건을 비교하여 값을 반환해야 한다. 예를 들어, 다음과 같은 배열이 있다고 하자.

const arr = [
  { name: 'John', age: 25 },
  { name: 'Alice', age: 30 },
  { name: 'Bob', age: 20 },
  { name: 'David', age: 25 },
];

위 배열에서 우리는 나이와 이름을 기준으로 정렬하고 싶다. 이를 위해서는 Array.prototype.sort() 함수를 사용하여 정렬 함수를 작성해야 한다. 다음은 이를 구현한 코드이다.

arr.sort((a, b) => {
  if (a.age !== b.age) {
    return a.age - b.age; // 나이가 다른 경우, 나이 오름차순으로 정렬
  } else {
    return a.name.localeCompare(b.name); // 나이가 같은 경우, 이름 오름차순으로 정렬
  }
});

console.log(arr);
// [{ name: 'Bob', age: 20 }, { name: 'David', age: 25 }, { name: 'John', age: 25 }, { name: 'Alice', age: 30 }]

위 코드에서는 나이를 비교하는 조건과 이름을 비교하는 조건을 모두 포함한 정렬 함수를 작성하였다. Array.prototype.sort() 함수에 이 함수를 전달하면, 배열이 나이 오름차순으로 정렬되고, 나이가 같은 경우 이름 오름차순으로 정렬된다.