Tags
- 맛집
- 카페
- 해리포터
- fdr-x3000
- 650d
- k-디지털트레이닝
- 대만
- ai_엔지니어링
- Python
- 건담
- 전시
- 시청
- 여행
- 축복이
- CS231n
- 우리에프아이에스
- 도쿄
- SQL
- 글로벌소프트웨어캠퍼스
- 제주도
- 사진
- 군산
- 17-55
- 전주
- 수요미식회
- 대만여행
- 축복렌즈
- 우리fis아카데미
- 우리fisa
- 오사카
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Today
- Total
Recent Posts
300x250
브렌쏭의 Veritas_Garage
자바스크립트, Array.prototype.sort() 본문
자바스크립트에서 어레이 내장 정렬 메소드를 이용해 숫자를 정렬하면 기기묘묘한 일이 생긴다.
[ 1, 2, 5, 7, 10, 20, 80 ] 을 정렬하기 위해 .sort() 를 쓰면 다음과 같이 정렬된다.
[ 1, 10, 2, 20, 5, 7, 80 ]
이유는 간단하다. 숫자 데이터 타입으로 들어가 있든, 숫자모양의 문자열로 들어가 있든 일단 자바스크립트의 함수는 모든 데이터타입을 아스키 코드로 바꿔버린 뒤, 그 아스키 코드넘버 순으로 정렬하기 때문이다. 그래서 1 다음에는 10이 오고, 그 뒤에는 100이 온다.
ASCII....
영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계이다. 한 글자당 7바이트의 내용과 1바이트의 오류검출코드가 들어가 있다. 여러분도 어디 외계행성에 혼자 남겨진 뒤 카메라와 수신호만으로 신호를 주고 받을 경우에 대비해서 가지고 있도록 해라.
따라서 생각하는 대로 정렬을 하기 위해서는 그냥 sort()를 그대로 사용하지 않고
내부의 콜백함수를 꼭 써야한다.
내부함수의 메커니즘은 "a와 b가 있는데, 뭘 보내줄까?" 의 기준을 정해주는 것이다. sort((a, b) =>{})의 상황이라고 가정한다면,
- 반환값이 음수: a가 b 보다 작으므로, 앞에 있어야한다.
- 반환값이 0 : a와 b 는 같은 값이므로 위치를 바꿀 필요가 없다.
- 반환값이 양수: a가 b보다 크니까, 서로 자리를 바꾼다.
const arr = [1, 2, 3, 20, 40, 100] 일때
평범한 오름차순 상황이라면
arr.sort((a,b) => a - b);
반대로 내림차순 상황이라면
arr.sort((a,b) => b - a );
애로우 펑션을 적극활용해서 쓰면 이정도겠다.
'[Project_하다] > [Project_공부]' 카테고리의 다른 글
Husky..husky...허스키.. & Git hook (0) | 2022.03.23 |
---|---|
ESlint & Prettier : 코드의 퀄리티와 스타일 (0) | 2022.03.22 |
타입스크립트, MS의 모빌슈츠는 괴물인가? (0) | 2022.03.22 |
문자열 조작: String.Methods[Day06] (0) | 2022.03.21 |
GraphQL은 뭔가? 그리고 REST와 비교. (0) | 2022.03.18 |
TIL20220317 #Express #restAPI (0) | 2022.03.17 |
유용한 JS, Template Literal & ..Callback....? (0) | 2022.03.17 |
Comments