Javascript - 오름차순, 내림차순

Hong·2022년 11월 4일
0

알고리즘 눈덩이 3트 ⛄️⛄️⛄️




이번에도 알고리즘 문제를 푸는데 오름차순으로 숫자를 정리할 일이 생겨
sort라는 녀석을 찾아 적용했건만..
이 녀석이 오름차순으로 정리하긴 했는데 이상한 방식으로 숫자를 정리하는 모습을 볼 수 있었다.
왜 1다음에 16인데..😓


const arr = [1, 5, 6, 16, 8, 9]

console.log(arr.sort()); //[ 1, 16, 5, 6, 8, 9 ]

이유는 javascript의 .sort()함수는 기본적으로 배열을 문자열(string) 타입으로 간주하고 비교하기 때문이다.


예를들어 [90, 100, 110]에 .sort()를 하면 문자열 "90", "100", "110"으로 생각하고 정렬한다.
이때 "90"과 "100"을 비교할 때 앞자리 9와 1을 비교하고 우리의 똑똑한 자바스크립트는
"아하, 9보다 1이 작으니까 1을 앞에 넣어야지"라고 생각한다.
이러한 논리에 따라 100이 90보다 앞에 위치해서 [100, 110, 90]을 반환한다.



💡 해결책은 간단하다.

.sort()와 함께 a-b(오름차순), b-a(내림차순)를 사용하면 된다.

(정확히 왜 이런 식으로 작동하는지는 모르겠습니다..)

const arr = [1, 5, 6, 16, 8, 9]

console.log(arr.sort((a, b) => {
    return a - b; 
}));
// [ 1, 5, 6, 8, 9, 16 ]

console.log(arr.sort((a, b) => {
    return b - a; 
}));
// [ 16, 9, 8, 6, 5, 1 ]








참고했다
https://change-words.tistory.com/64

profile
Notorious

0개의 댓글