관리 메뉴

Jerry

Javascript_자바스크립트_sort_메서드 본문

Problem Solving/Algorithm 개념 익히기

Javascript_자바스크립트_sort_메서드

juicyjerry 2022. 1. 14. 11:20
반응형

 

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

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

 

 

 

반응형