Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 쏙쏙 들어오는 함수형 코딩
- 로버트 C마틴
- 클린코드다시읽기
- 유틸리티타입은 공식문서 자주 보자
- 출처 : 코딩앙마
- https://product.kyobobook.co.kr/detail/S000001952246
- 김영한쌤
- 오종택개발자님
- 흥달쌤
- 출처 : 코딩애플
- 나는 flux좋아...
- 자바스크립트 딥다이브
- 에릭 노이먼
- 에릭노이먼
- 갈길이 멀구나
- 고등애플
- 생코님Redux
- 쏙쏙 들어오는 함수형코딩
- 출처 : 자바스크립트 딥다이브
- 출처는 코딩앙마
- 쏙속 들어오는 함수형코딩
- 출처 : https://www.boostcourse.org/
- 쏙쏙들어오는함수형코딩
- 출처 : 한입크기로 잘라먹는 타입스크립트
- 에릭 노먼드
- 리엑트를 다루는 기술
- 출처는 코딩애플
- 함수형 코딩
- 큰돌의 CS책
- 이웅모
Archives
- Today
- Total
흰둥씨의 개발장
[javascript] sort 본문
javascript의 sort는 자바스크립트의 sort가 아닌 "브라우저엔진의 sort"임
=> ECMAscript에서 정렬 알고리즘을 규제하고 있지 않고, 브라우저 벤더사에 정렬 알고리즘을 맡겨서,
실행브라우저마다 결과 다를수 있음
ㄴChrome70(2018.10배포버전)은 Timsort (그전에는 삽입정렬(10개이하)과 퀵정렬(10개초과)을 동시 사용했음)
ㄴMozilla는 병합정렬
ㄴsafari는 선택정렬
아래의 예시는 브라우저사마다 발생할수있는 에러 없이 사용할수 있는 정렬방뻐
단순 숫자열 정렬시
data.sort(); // [1, 10, 11, 2, 20, 22, 30, 40]
//자바스크립트의 정렬은 앞자리부터 비교하기 때문에 위와 같은 결과 나옴
data.sort((a,b)=> a - b); //[1, 2, 10, 11, 20, 22, 30, 40] 오름차순 정렬
data.sort((a,b)=> b - a); //[40, 30, 22, 20, 11, 10, 2, 1] 내림차순 정렬
문자열 정렬시 (문자열을 숫자열과 같은 연산자로 정렬하면 NaN나오기 때문에 아래와 같은 방법 사용)
//jsonData는 임의의 배열
//오름차순
jsonData.sort((a, b) => (a[key] < b[key] ? -1 : (a[key] > b[key] ? 1 : 0)))
//내림차순
jsonData.sort((a, b) => (a[key] > b[key] ? -1 : (a[key] < b[key] ? 1 : 0)))
활용 예시
let data = [
[6, 'a', 'hello'],
[3, 'f', 'hello world'],
[7, 'b', 'hello a'],
[8, 'g', 'hello world hello'],
[4, 'e', 'hello world hello world'],
[2, 'c', 'hello ab'],
[1, 'd', 'hello abc'],
]
data.sort((a, b) => a[2].length - b[2].length); //세번째 긴 문자열이 있는 값의 길이 기준 오름차순 정렬하기
/* [
[6, 'a', 'hello']
[7, 'b', 'hello a']
[2, 'c', 'hello ab']
[1, 'd', 'hello abc']
[3, 'f', 'hello world']
[8, 'g', 'hello world hello']
[4, 'e', 'hello world hello world']
] */
data.sort((a, b) => a[0] - b[0]); //맨 앞자리 숫자 값 기준으로 오름차순정렬
/* [
[1, 'd', 'hello abc']
[2, 'c', 'hello ab']
[3, 'f', 'hello world']
[4, 'e', 'hello world hello world']
[6, 'a', 'hello']
[7, 'b', 'hello a']
[8, 'g', 'hello world hello']
] */
//두번째 문자 기준 오름차순정렬하기
data.sort((a, b) => { //문자열에 연산하면 NaN나오기 때문에 조건식 작성
if (a[1] > b[1]) return 1; //조건 만족시 a가 뒤로 가게
if (a[1] < b[1]) return -1; //조건 만족시 a가 앞으로 가게
if (a[1] === b[1]) return 0;
});
/* [
[6, 'a', 'hello']
[7, 'b', 'hello a']
[2, 'c', 'hello ab']
[1, 'd', 'hello abc']
[4, 'e', 'hello world hello world']
[3, 'f', 'hello world']
[8, 'g', 'hello world hello']
] */
'[오늘의 공부] > Javascript' 카테고리의 다른 글
[javascript] Promise, async/await 가 무엇이냐! (0) | 2024.06.07 |
---|---|
[javascript] Truthy / Falsy (0) | 2023.07.14 |
[javascript] 배열method 정리 (0) | 2023.03.02 |
[javascript] or 연산자(||), ??연산자의 차이와 ?. 로 에러 대신 undefined 반환하기 (0) | 2023.02.04 |
[javascript] 비동기로 GET하기 (0) | 2023.01.25 |