자바스크립트에서 여러 조건으로 정렬을 해보자
여러 조건으로 정렬하는 경우가 많진 않은데? 많나? 아무튼 자바스크립트에서 한번 해보자
자바스크립트에서 여러 정렬 조건을 사용하는 방법에 대해서 알아보자. 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() 함수에 이 함수를 전달하면, 배열이 나이 오름차순으로 정렬되고, 나이가 같은 경우 이름 오름차순으로 정렬된다.