sort 함수는 배열 내부의 값을 손쉽게 정렬 할 수 있다.
const arr = [5,4,3,2,1]
arr.sort()
console.log(arr) //[ 1, 2, 3, 4, 5 ]
그런데, 아래의 코드를 보면 의도한 것과 다르게 정렬이 된 것을 볼 수 있다.
const arr = [15,14,13,2,1,3,4,5,6]
arr.sort()
console.log(arr) //[ 1, 13, 14, 15, 2, 3, 4, 5, 6 ]
원인은 javascript 의 sort함수는 배열 안의 값을 유니코드에 기반해서 정렬하기 때문이다.
즉, 11 < 5로 비교가 된다. 1은 유니코드에서 49, 5는 53이기 때문에
해결 방법은 comapre function을 활용 하는 것 이다.
const arr = [ 15, 14, 13, 2, 1, 3, 4, 5, 6 ]
arr.sort(( next, prev )=>{
if( next > prev ){
return 1
} else if ( next < prev ){
return -1
}
})
console.log(arr) //[ 1, 2, 3, 4, 5, 6, 13, 14, 15 ]
compare function이란 sort 함수 안에서 원하는 형태로 정렬 할 수있도록 하는 함수인데, 이 함수는 2개의 parameter를 가지고, 1번쨰는 비교 대상값 중 뒤에 있는 값, 2번째가 비교 대상 값 중 앞에 있는 값 이다.
반환값이 0보다 큼 -> 오름차순 정렬
반환값이 0 -> 변화 x
반환값이 0보다 작음 -> 내림차순 정렬이 된다.
'프로그래밍 > javascript' 카테고리의 다른 글
svelte를 시작 해보자 (0) | 2022.02.20 |
---|---|
javascipt 함수의 인터페이스 (0) | 2022.02.17 |
begining functional javascript 8장ㅇ=0 함수자 (0) | 2022.02.09 |
javascript의 this 그리고 [call,bind,apply] 함수 (0) | 2022.02.02 |
begining functional javascript 4장 클로저 (0) | 2022.01.19 |