본문 바로가기
Frontend/JavaScript

JS의 sort()는 기본적으로 문자열 정렬이다.

by yerin.dev 2024. 6. 4.

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;
});