728x90
반응형
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 기본적으로 sort 메서드는 배열의 요소를 문자열로 변환하여 사전순(유니코드 순서)으로 정렬하기 때문에 숫자 배열에서 sort 를 사용하면 예상과 다르게 정렬될 수 있다.
let numbers = [40, 1, 5, 200];
numbers.sort();
console.log(numbers); // 출력: [1, 200, 40, 5]
정확한 정렬을 위해서 compareFunction 을 인자로 전달하여 사용할 수 있다. compareFunction 정렬 순서를 정의하는 함수로 생략할 수 있다. compareFunction 의 반환 값은 복사본이 아닌 정렬된 원 배열이다.
- 음수: a 가 b 보다 앞에 있어야 함
- 양수: a 가 b 보다 뒤에 있어야 함
- 0: a 와 b 의 순서를 유지
let numbers = [40, 1, 5, 200];
// 오름차순 정렬
numbers.sort((a, b) => a - b);
console.log(numbers); // 출력: [1, 5, 40, 200]
// 내림차순 정렬
numbers.sort((a, b) => b - a);
console.log(numbers); // 출력: [200, 40, 5, 1]
문자열 정렬은 사전순(유니코드순)이기 때문에 대소문자가 섞여있는 경우 원하는 것과 다른 정렬이 나올 수 있다. 이 경우에도 compareFunction 을 사용하여 원하는 결과를 얻을 수 있다.
localeCompare 메서드
- 음수: 첫 번째 문자열이 두 번째 문자열보다 앞에 있어야 함
- 양수: 첫 번째 문자열이 두 번째 문자열보다 뒤에 있어야 함
- 0: 두 문자열이 같음
아래와 같이 사용하면 대소문자 구별없이 정렬이 가능한데, 많은 옵션이 있으니 필요에 따라 찾아서 사용하는 것을 추천한다.
let fruits = ["Banana", "apple", "Cherry", "banana"];
fruits.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
console.log(fruits); // 출력: ["apple", "Banana", "banana", "Cherry"]
728x90
반응형
'웹 > JavaScript' 카테고리의 다른 글
[JavaScript] 데이터 처리 - 기초4 (0) | 2024.08.05 |
---|---|
[JavaScript] 기초 - 데이터 처리3 (0) | 2024.08.01 |
[JavaScript] 기초- 데이터처리2 (0) | 2024.07.30 |
[JavaScript] 기초 - 데이터 처리1 (0) | 2024.07.29 |
[JavaScript] 기초 - 데이터와 형태 (0) | 2024.07.29 |