언어/Javascript

[JS] 배열 정렬 메소드 sort() / 2차원 배열 정렬

thinktank911 2025. 9. 18. 18:44

sort() 메소드는 배열의 요소를 정렬하는 함수이다.

 

기본 문법

arr.sort([compareFunction])

 

  • compareFunction (선택): 정렬 기준을 정하는 함수. 생략하면 배열의 각 요소들은 문자열로 변환되며 유니코드 코드포인트 순서, 즉 사전식 정렬이 된다.

 

반환값

배열이 복사되는 것이 아니라 기존 배열이 정렬된다.

 

 

문자열 정렬

  • compareFunction 없이 사전식 정렬
let fruits = ["banana", "apple", "cherry"];
fruits.sort();
console.log(fruits); // ["apple", "banana", "cherry"]

 

 

숫자 오름차순 정렬

  • compareFunction 이 음수값 리턴
let numbers = [10, 5, 20, 1];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 10, 20] ✅

 

숫자 내림차순 정렬

  • compareFunction 이 양수값 리턴
  • 반환값이 0이면 순서 유지
numbers.sort((a, b) => b - a);
console.log(numbers); // [20, 10, 5, 1]

 


2차원 배열 정렬

 

기본예제

  • 여기서 arr은 3개의 배열 [x, y]를 요소로 갖는 2차원 배열
let arr = [
  [2, 5],
  [1, 7],
  [3, 2]
];

 

 

첫번째 요소로 배열 정렬

 

  • a[0] - b[0] → 첫 번째 값(x)을 기준으로 오름차순 정렬
  • 내림차순으로 하려면 b[0] - a[0]

 

arr.sort((a, b) => a[0] - b[0]);
console.log(arr);
// [[1,7], [2,5], [3,2]]

 

두번째 요소로 배열 정렬

  • a[1] - b[1] → 두 번째 값(y)을 기준으로 오름차순
arr.sort((a, b) => a[1] - b[1]);
console.log(arr);
// [[3,2], [2,5], [1,7]]

 

다중 기준 정렬 (첫 번째 요소 기준, 같으면 두 번째 기준)

  • 조건문을 이용해 다중 기준 정렬 가능
let arr2 = [
  [2, 5],
  [1, 7],
  [2, 3],
  [1, 2]
];

arr2.sort((a, b) => {
  if (a[0] === b[0]) {
    return a[1] - b[1]; // 첫 번째 값이 같으면 두 번째 값 기준
  } else {
    return a[0] - b[0]; // 첫 번째 값 기준
  }
});

console.log(arr2);
// [[1,2], [1,7], [2,3], [2,5]]