일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Login
- java기초
- function
- JavaScript
- MySQL
- Database
- javascropt
- padEnd
- 시간보여주기
- SQL
- sanitize-html
- JavaScript#조건문#conditional
- padStart
- 스파르타코딩클럽
- gethours
- 프로그래머스
- 웹개발종합반
- JOIN
- node.js
- getMinutes
- localstorage
- dateobject
- 올바른괄호
- LEFTJOIN
- classList
- appendChild
- 백준3052번
- 자바스크립트
- 스택큐
- classname
- Today
- Total
just do it
sort 함수 이해하기(오름차순, 내림차순 함수 만들기) 본문
코딩테스트 기본 문제 복습하다가 내림차순 함수를 정의할때
array.sort((a,b)=>b-a);
와 같이 sort 함수를 사용해왔는데 왜 b-a인지 제대로 이해하진 못하고 있는 것같아 추가로 학습함
sort 함수는 유니코드 정렬을 기본으로 하므로 숫자의 내림차순, 오름차순을 위해서는
compareFunction 을 사용해야 함
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
compareFunction 에 대한 설명은 아래 와 같음
compareFunction이 제공되면 배열 요소는 compare 함수의 반환 값에 따라 정렬됩니다. a와 b가 비교되는 두 요소라면,
- compareFunction(a, b)이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. 즉, a가 먼저옵니다.
- compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬합니다. 참고 : ECMAscript 표준은 이러한 동작을 보장하지 않으므로 모든 브라우저(예 : Mozilla 버전은 적어도 2003 년 이후 버전 임)가 이를 존중하지는 않습니다.
- compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.
- compareFunction(a, b)은 요소 a와 b의 특정 쌍이 두 개의 인수로 주어질 때 항상 동일한 값을 반환해야합니다. 일치하지 않는 결과가 반환되면 정렬 순서는 정의되지 않습니다.
즉 array.sort((compareFunction(a, b)) 에서
compareFunction(a, b) < 0 이면 a를 앞으로 정렬
compareFunction(a, b) = 0 이면 변함 없음
compareFunction(a, b) > 0 이면 b를 앞으로 정렬 이란 뜻
여러 이해방법이 있겠지만 하나를 기록해보자면
숫자 오름차순 정렬을 원할 경우
x < y 이면 x를 앞으로 정렬 하는 것과 같음
; x - y < 0 이면 x를 앞으로 정렬하는 것
위의 compareFunction(a, b) < 0 이면 a를 앞으로 정렬 이란 설명에서
a가 x , b가 y 를 의미하는거고
compareFunction(a, b) 이 a-b 가 됨
따라 오름차순 정렬 하는 함수는 아래와 같이 작성하게됨
1
2
3
4
5
6
7
8
|
function descendingOrder(arr) {
arr.sort(function(a, b) {
return b - a;
});
return arr;
}
|
cs |
더 쉽게 이해하자면
(함수return 값)<0 이면 a를 앞으로 니깐
내림차순 원하니까
큰게(a) 앞으로 와야하니 a>b 니깐
(함수return 값)<0
b-a<0
'언어&프레임워크 > JavaScript' 카테고리의 다른 글
function, object(JavaScript) (0) | 2023.05.05 |
---|---|
연산, 반복문(JavaScript) (0) | 2023.05.04 |
Promise 객체 (0) | 2023.03.31 |
Weather API로 날씨정보 가져오기(getCurrentPosition, fetch, 섭씨온도로 변환)(in JavaScript)(2) (2) | 2022.12.27 |
Delete to do(in JavaScript)(2) (0) | 2022.12.27 |