본문 바로가기
개발공부_Blog/JavaScript

Array.sort( ) : 배열 정렬 메소드

by 소팡팡 2022. 10. 11.

Array.sort( )

  • sort 메서드는 배열의 요소를 오름차순으로 정렬한다
  • 원본 매열을 직접 변경하며 정렬된 배열을 반환한다
const fruits = ['banana', 'apple', 'orange'];
fruits.sort();

// 원본 배열을 직접 변경한다
console.log(fruits); // [ 'apple','banana','orange' ]

 

한글 문자열도 오름차순으로 정렬한다.

// 한글 문자열도 오름차순으로 정렬한다.
const 과일 = ['오렌지', '바나나', '사과'];
과일.sort();

console.log(과일); // [ '바나나', '사과', '오렌지'];

 

내림차순으로 요소를 정렬하려면,

sort()를 사용해 오름차순으로 한 번 정렬하고, reverse()를 사용해 요소의 순서를 뒤집는다.

(reverse도 원본 배열을 수정한다)

const fruits = ['banana', 'apple', 'orange'];
fruits.sort(); // [ 'apple','banana','orange' ]

// 내림차순 정렬
fruits.reverse();

// reverse메서드도 원본 배열 수정
console.log(fruits); //['orange', 'banana', 'apple']

 

sort 메서드의 정렬 순서는 유니코드의 순서를 따르기 때문에,

  • 배열이 숫자 타입의 요소여도 일시적으로 문자열로 변경 후에 유니코드 값을 기준으로 정렬된다.
    이러한 sort 함수의 특징 때문에 우리는 sort 함수에 대한 커스터마이징을 해주어야 한다.  => sort메서드에 비교함수를 인수로 전달해야 한다.
const point = [40, 100, 1, 5, 2, 25, 10];

// 오름차순 정렬 -> 우리가 생각하는 정렬 결과 [ 1, 2, 5, 10, 25, 40, 100 ]
point.sort();

// 유니코드 기준으로 정렬된 결과값
console.log(point); // [1, 10, 100, 2, 25, 40, 5]

 

비교 함수(Compare Function) 작성하기

  • sort메서드에 인수로 넣을 비교함수의 결과값에 따라 오름차순과 내림차순이 결정된다.
  • 비교함수는 1 , 0, -1의 값을 반환해야 한다. 
  • ( a, b ) => a - b : 비교함수의 반환값이 0보다 작으면 a를 우선 정렬한다.
  • ( a, b ) => b - a : 비교함수의 반환값이 0보다 크면 b를 우선 정렬한다.
const point = [40, 100, 1, 5, 2, 25, 10];

// 유니코드 기준으로 정렬된 결과값
point.sort(); // [1, 10, 100, 2, 25, 40, 5]

// 오름차순 정렬
point.sort((a,b)=> a-b) //[1, 2, 5, 10, 25, 40, 100]

// 내림차순 정렬
point.sort((a,b)=> b-a) //[100, 40, 25, 10, 5, 2, 1]

 

 

 

 

댓글