JS의 sort() 함수는 기본적으로 문자열 정렬
let numbers = [10, 2, 1];
numbers.sort(); // ["1", "10", "2"]
JS의 sort()는 기본적으로 문자열 정렬을 수행하기 때문에 위와 같은 결과가 나온다.
이 결과는 숫자 값에 따른 정렬이 아니라 문자열로 변환된 후의 유니코드 값에 따른 정렬.
예상한 대로 수 비교를 해서 정렬을 하고 싶다면 비교함수를 sort()에 전달해야 한다.
let numbers = [10, 2, 1];
numbers.sort((a, b) => a - b); // [1, 2, 10]
// 다른 방식으로 써보기
numbers.sort((a, b) => {
if (a < b) return -1;
else if (a > b) return 1;
else return 0;
}
사실상 가장 위의 numbers.sort()는 아래의 코드와 같은 것.
numbers.sort((a, b) => {
const strA = a.toString();
const strB = b.toString();
if (strA < strB) return -1;
else if (strA > strB) return 1;
else return 0;
});
'Frontend > JavaScript' 카테고리의 다른 글
| 자바스크립트와 비동기 (0) | 2024.07.10 |
|---|---|
| Array.at() 뒤에서부터 인덱스 접근 (0) | 2024.03.14 |
| 검색어 입력하는 동안 API 호출 지연하기 - 디바운스(Debounce) (0) | 2024.01.22 |
| [JavaScript] e.preventDefault() 로 form 의 기본 동작 막기 (0) | 2024.01.22 |
| Proxy 프록시 (0) | 2023.12.29 |