하다보니
[JavaScript] sort 함수 본문
.sort() 만으로는 정렬이 안 되는 걸까?
안된다. 그 이유는 자바스크립트의 sort 함수는 기본적으로 배열을 문자열 타입으로 간주하고 비교하기 때문이다. [b,a,c]라는 배열에 .sort() 를 적용하면 [a,b,c]로 맞게 정렬을 해주는데 숫자 [90,100,110]은 "90","100","110"으로 간주되어 "90"과 "100"을 비교시 앞자리 9와 1을 비교하여 100보타 90이 더 크다는 결론을 내린다.
이러한 이유로 숫자를 비교하기 위해선 별도로 정의된 compare function을 이용해야 한다. sort 함수는 인자로 compare function을 받는다. 즉, 인자의 자리에 함수가 위치한다.
sort 알고리즘은 2개의 배열 인자를 뺄셈 연산을 이용하여, 뺀 값이 양수이면 2개의 배열인자를 자리바꿈하고, 음수면 바꾸지 않는다.
- 오름차순
[1,2,3].sort((a,b)=>a-b)
- 내림차순
[1,2,3].sort((a,b)=>b-a)
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[JavaScript]실행 컨텍스트 (0) | 2022.05.30 |
---|---|
[JavaScript] 스프레드 연산자 (0) | 2022.03.26 |
비동기의 꽃 JavaScript async와 await, 그리고 유용한 promise APIs (0) | 2022.01.24 |
프로미스 개념부터 활용까지 (0) | 2022.01.22 |
비동기 처리의 시작 콜백 이해하기 (0) | 2022.01.21 |