본문 바로가기

JavaScript/methods

[JavaScript] 배열 정렬 Array.prototype.sort()

 


sort 함수는 원본 배열을 직접 변경하며, 정렬된 배열을 반환한다.

 

기본 사용법은 아래와 같다

1. array.sort(  )

2. array.sort( 비교함수 ) 

 

배열의 요소를 정렬하고, 기본적으로 요소를 문자열로 변환한 후 유니코드 순서로 정렬한다.

이 말은 숫자비교가 제대로 안된다는 뜻이다

const numbers = [10, 1, 21];
numbers.sort();
console.log(numbers); // 출력: [1, 10, 21]

 

 

1. 배열 안의 숫자 비교

 


위 예에서 본 것처럼 숫자 비교를 할 시, 항상 비교함수를 넣어줘야 한다.

   숫자배열.sort((a, b) => a - b);  // 오름차순
   숫자배열.sort((a, b) => b - a);  // 내림차순

 

10 - 1  = 9  이므로 양수이므로 [1,10 ] 순으로 정렬하고

10 - 21 =  -11 음수이므로 21 이 더 크다고 판단하여 정렬은 하지 않고 그대로 둔다 그래서 [1, 10 ,21 ] 의 순으로 배열이 정렬된다

두 수의 차가 0 이거나 Nan 일 경우는 같다고 판단하여 그대로 두고 다음 index 로 넘어가게 된다.

 

 

2. 객체 배열 안의 속성 숫자 비교

 

   객체배열.sort((a, b) => a.속성 - b.속성);
const items = [
  { name: 'Apple', price: 5 },
  { name: 'Banana', price: 2 },
  { name: 'Cherry', price: 7 }
];
items.sort((a, b) => a.price - b.price);
console.log(items);
// 출력: 
[
  { name: 'Banana', price: 2 }, 
  { name: 'Apple', price: 5 }, 
  { name: 'Cherry', price: 7 }
]