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

JavaScript에서 하위 배열의 첫 번째 요소를 기준으로 배열 정렬하는 방법

JavaScript에서 중첩 배열(2차원 배열)을 다루다 보면 각 하위 배열의 첫 번째 요소를 기준으로 전체 배열을 정렬해야 하는 경우가 자주 발생합니다. 예를 들어 학생 점수 데이터를 내림차순으로 정렬하거나, 상품 가격순으로 목록을 재배치할 때 유용하게 활용됩니다.

예제 데이터 살펴보기

다음과 같이 점수와 이름으로 구성된 하위 배열을 포함하는 배열이 있다고 가정해 보겠습니다.

var studentDetails = [
    [89, "John"],
    [78, "John"],
    [94, "John"],
    [47, "John"],
    [33, "John"]
];

여기서 우리의 목표는 각 하위 배열의 첫 번째 항목, 즉 89, 78, 94, 47, 33과 같은 점수 값을 기준으로 배열을 정렬하는 것입니다. 이때 JavaScript의 sort() 메서드와 콜백 함수를 활용하면 간단하게 해결할 수 있습니다.

sort() 메서드로 정렬 구현하기

sort() 메서드는 비교 함수를 인자로 받습니다. 이 비교 함수에서 두 하위 배열의 첫 번째 요소를 서로 빼면, 그 결과값에 따라 오름차순 또는 내림차순 정렬이 결정됩니다. 아래 코드는 첫 번째 요소를 기준으로 내림차순 정렬하는 예제입니다.

var studentDetails = [
    [89, "John"],
    [78, "John"],
    [94, "John"],
    [47, "John"],
    [33, "John"]
];

// 첫 번째 요소 기준 내림차순 정렬
studentDetails.sort((first, second) => second[0] - first[0]);

console.log(studentDetails);

코드 동작 원리

  • (first, second) => second[0] - first[0]: 두 하위 배열의 첫 번째 요소를 비교합니다.
  • 결과가 양수이면 first가 second 뒤로 이동하고, 음수이면 앞으로 이동합니다.
  • 오름차순으로 정렬하고 싶다면 first[0] - second[0]처럼 순서를 반대로 바꾸면 됩니다.

프로그램 실행 방법

Node.js 환경에서 위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.

node fileName.js

여기서는 파일 이름이 demo293.js라고 가정하겠습니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력 결과가 나타납니다. 점수가 높은 순서대로(내림차순) 정렬된 것을 확인할 수 있습니다.

PS C:\Users\Amit\javascript-code> node demo293.js
[
    [ 94, 'John' ],
    [ 89, 'John' ],
    [ 78, 'John' ],
    [ 47, 'John' ],
    [ 33, 'John' ]
]

정리

중첩 배열을 특정 위치의 요소를 기준으로 정렬하는 것은 sort() 메서드에 화살표 함수 형태의 비교 함수를 전달하는 것만으로 손쉽게 구현할 수 있습니다. 인덱스 번호만 변경하면 두 번째 요소나 세 번째 요소를 기준으로도 정렬할 수 있으므로, 다양한 데이터 정렬 작업에 응용해 보시기 바랍니다.