JavaScript/methods
[JavaScript] 배열 정렬 Array.prototype.sort()
머지?는 병합입니다
2024. 8. 25. 02:06
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 }
]