일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- til
- 회고
- Async
- 백준
- programmers
- 파이썬
- 프로그래머스
- python
- SQL 고득점 Kit
- 타입스크립트 올인원
- 정재남
- 자바스크립트
- 토익
- LeetCode
- 코드스테이츠
- 2주 프로젝트
- 렛츠기릿 자바스크립트
- 리액트
- 리트코드
- javascript
- 알고리즘
- 리덕스
- 제로초
- 코어 자바스크립트
- js
- 4주 프로젝트
- 타입스크립트
- codestates
- 타임어택
- 손에 익히며 배우는 네트워크 첫걸음
Archives
- Today
- Total
Jerry
Javascript_자바스크립트_sort_메서드 본문
반응형
sort 메서드는 임의의 배열 내부의 요소를
'문자열의 유니코드 포인트'를 기준으로
정렬된 배열 형태로 반환합니다.
이번 기록을 남기게 된 계기는 알고리즘 문제를 푸는 도중 array.sort() 로 정렬을 사용했는데 통과가 안 되었다. 그 원인을 찾아보니, sort()가 필자가 원하는 *오름차순 정렬을 한다고 생각했지만 그렇지 않은 예외의 경우가 있었기 때문이다.
정리하면, 필자는 오름차순 정렬을 위해 array.sort()를 사용했지만, 이건 오름차순이 아니라 문자열 유니코드 포인트에 따른 정렬이었다. 아래 코드 스니펫에서 예시 #2와 예시 #3의 비교해보면 좀 더 이해가 수월할 것이다.
// #1
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]
// #2
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]
// #3
const array2 = array1.slice();
array2.sort((a, b) => a - b);
console.log(array2);
// expected output: Array [1, 4, 21, 30, 100000]
결론. array.sort() 에서 array.sort((a, b) => a - b) 로 수정했다.
누군가 궁금할 만한 이슈라고 생각해 이번 기회에 기록으로 남기게 되었다.
참고로 array.sort((a, b) => b - a) 는 **내림차순이다.
* 오름차순은 작은 수부터 큰 수 순으로 정렬 ex) 1, 4, 6, 22
** 내림차순은 큰 수부터 작은 수 순으로 정렬) ex) 111, 55, 32, 3, 0
출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
반응형
'Problem Solving > Algorithm 개념 익히기' 카테고리의 다른 글
[Algorithm]Divide and Conquer & greedy: 분할 정복과 탐욕법에 대해 알아보자! (0) | 2021.06.07 |
---|---|
[Algorithm] DFS / BFS 에 대해 알아보자! (0) | 2021.06.02 |
[Algorithm] Stack & Queue: 스택과 큐에 대해 알아보자! (0) | 2021.06.01 |
One Paper: Linked List (0) | 2020.10.24 |
One Paper: Stack & Queue (0) | 2020.10.23 |