[JavaScript] 배열 정렬하기: sort()

rloo8·2024년 2월 27일

JavaScript

목록 보기
2/4
post-thumbnail

Javascript에서 배열을 정렬하기 위해서는 sort() 함수를 사용한다.

arr.sort([compareFunction])

compareFunction이 생략될 경우 , 배열의 요소들은 모두 문자열 취급되며, 유니코드 값 순서대로 정렬된다.

compareFunction : 정렬 순서를 정의하는 함수

  • 이 함수는 두 개의 배열 요소를 파라미터로 입력 받는다.
  • 함수가 두 개의 배열 요소(a, b)로 입력 받을 경우
    • a > b => return 1
      // return value>0이므로 a는 b 뒤에 위치
    • a < b => return -1
      // return value<0이므로 a는 b 앞에 위치
    • a = b => return 0
      // a와 b의 순서 변함 없음

기본 정렬(유니코드 순서)

const arr1 = [2, 1, 3];
const arr2 = [2, 1, 3, 10];
const arr3 = ['banana', 'apple', 'orange'];

arr1.sort(); // [1, 2, 3]
arr2.sort(); // [1, 10, 2, 3]
arr3.sort(); // ['apple', 'banana', 'orange']

오름차순 정렬

배열의 숫자들을 유니코드 순서가 아닌, 숫자 크기 순서대로 정렬하기 위해서 sort() 함수의 파라미터로 함수를 정의한다.

const arr = [2, 1, 3, 10];

arr.sort(function(a, b)  {
  if(a > b) return 1;
  if(a === b) return 0;
  if(a < b) return -1;
}); 
// [1,2,3,10]
arr.sort((a,b) => a-b); // [1,2,3,10]

내림차순 정렬

arr.sort((a,b) => b-a); // [10,3,2,1]

문자열 정렬

sort() 함수로 문자열을 정렬하면, 유니코드가 대문자가 소문자보다 앞서기 때문에 대문자가 소문자보다 앞에 오도록 정렬된다.
(숫자 > 영어 대문자 > 영어 소문자 > 한글)

const arr = ['Banana', 'apple', 'orange'];
arr.sort(); // ['Banana', 'apple', 'orange']

대소문자 구분 없이 정렬하려면

toUpperCase(), toLowerCase() 메서드를 사용해서 대문자 또는 소문자로 바꾼 후 비교하여 정렬한다.

arr.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if(upperCaseA > upperCaseB) return 1;
  if(upperCaseA < upperCaseB) return -1;
  if(upperCaseA === upperCaseB) return 0;
});

0개의 댓글