Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 배열의 첫 번째 요소를 고정한 채 정수 배열 정렬하기

이번 글에서는 숫자 배열을 입력받아 다음 조건에 따라 정렬하는 JavaScript 함수를 작성해 보겠습니다.

  • 배열의 첫 번째 요소(array[0])는 반드시 제자리에 유지되어야 합니다.
  • 첫 번째 요소보다 큰 값들이 있다면 그다음 순서로 배치합니다.
  • 나머지 값들은 가장 작은 정수부터 오름차순으로 정렬합니다.

예제

입력 배열이 다음과 같다고 가정해 보겠습니다.

const arr = [10, 7, 12, 3, 5, 6];

위 조건을 적용하면 출력 결과는 다음과 같습니다.

const output = [10, 12, 3, 5, 6, 7];

첫 번째 요소인 10은 맨 앞자리를 유지하고, 이보다 큰 값인 12가 바로 뒤에 위치합니다. 이후 나머지 값들(3, 5, 6, 7)은 오름차순으로 정렬됩니다.

구현 코드

다음은 위 로직을 구현한 코드입니다.

const arr = [10, 7, 12, 3, 5, 6];
const uniqueSort = (arr = []) => {
    const first = arr[0];
    const sorter = (a, b) => {
        return (a < first) - (b < first) || a - b;
    };
    arr.sort(sorter);
};
uniqueSort(arr);
console.log(arr);

코드 설명

핵심은 커스텀 비교 함수 sorter입니다. 동작 원리를 살펴보면 다음과 같습니다.

  • (a < first) - (b < first): 첫 번째 요소보다 작은 값들을 뒤로 밀어냅니다. 두 값이 같은 그룹에 속하면 결과가 0이 되므로 다음 조건으로 넘어갑니다.
  • a - b: 같은 그룹 내에서는 일반적인 오름차순 비교가 적용됩니다.

덕분에 첫 번째 요소(및 그보다 크거나 같은 값들)는 앞쪽에, 나머지 값들은 뒤쪽에 오름차순으로 자연스럽게 배치됩니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[10, 12, 3, 5, 6, 7]

이처럼 Array.prototype.sort()와 커스텀 비교 함수만 활용하면 별도의 복잡한 로직 없이도 첫 번째 요소를 고정한 특수 정렬을 간단하게 구현할 수 있습니다.