[JavaScript] 배열 정렬 (sort)

김형준·2025년 9월 3일

JavaScript

목록 보기
4/11
post-thumbnail

1️⃣ 기본 문법

let arr1 = ["carrot", "apple", "banana"];
let arr2 = [10, 2, 33, 1];

arr1.sort();
arr2.sort();

console.log(arr1);
console.log(arr2);
["apple", "banana", "carrot"]
[1, 10, 2, 33]

2️⃣ 특징

  • 기본적으로 문자열 기준으로 정렬 (기본 문법 예시)
  • 원본 배열이 변경
  • ES2019부터 안정 정렬(stable sort): 값이 같다고 판단되면 기존 순서 유지
  • 시간복잡도: O(nlogn)

3️⃣ 예시

(1-1) - 숫자 오름차순

const nums = [10, 2, 33, 1]

nums.sort((a, b) => a - b);
console.log(nums);
[1, 2, 10, 33]

(1-2) - 숫자 내림차순

const nums = [10, 2, 33, 1]

nums.sort((a, b) => b - a);
console.log(nums);
[33, 10, 2, 1]

(2-1) - 객체 정렬 [단일키]

const users = [
  { name: "Park", age: 24 },
  { name: "Lee", age: 19 },
  { name: "Kim", age: 24 },
];

// age 오름차순
users.sort((a, b) => a.age - b.age);

console.log(users);
[
  { name: "Lee", age: 19 },
  { name: "Park", age: 24 },
  { name: "Kim", age: 24 }
]

(2-2) - 객체 정렬 [다중키]

const users = [
  { name: "Kim", age: 24 },
  { name: "Lee", age: 19 },
  { name: "Park", age: 24 },
];

// age 오름차순, 같으면 name 사전순
users.sort((a, b) => (a.age - b.age) || a.name.localeCompare(b.name));
console.log(users);
[
  { name: "Lee", age: 19 },
  { name: "Kim", age: 24 },
  { name: "Park", age: 24 }
]

4️⃣ 주의할 점

  • 기본 정렬은 문자열 기준
  • 원본 변형 가능
    (불변이 필요하다면 toSorted() 또는 복사 후 sort 사용)
  • async comparator 금지
  • BigInt는 뺄셈 비교 주의
    (만약 사용한다면 아래와 같이 비교자 작성)
const bigs = [3n, 1n, 2n];

bigs.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
  • undefined/빈 슬롯은 기본 정렬에서 뒤로 감
    (comparator를 쓰면 직접 처리해야 함)
profile
프론트엔드 개발자, 엔지니어 지망생

0개의 댓글