JavaScript
[JavaScript]sort 오름차순 내림차순 정렬 (a-b)
운으로
2022. 6. 22. 23:36
sort 정렬 방법
const myList = [3,4,1,2,5,6]
// 오름차순 정렬
const sortedList = myList.sort((a,b) => a-b)
// 내림차순 정렬
const reverseSortedList = myList.sort((a,b) => b-a)
Q. sort 안에 비교함수를 왜 넣을까?
-> javascript에서는 기본적으로 문자열타입으로 간주하고 비교한다. 따라서 20과 100이 있으면 ["20", "100"]으로 보고 2가 1보다 크므로 20이 더 크다고 판단한다. 따라서 비교함수를 넣어야 한다.
Q. 왜 a-b와 b-a를 리턴하는데 정렬이 될까?
-> a-b의 결과가 0보다 작으면 a가 표시되고 0보다 크면 b가 표시된다. 그러나 [3,4,1,2,5,6] 이 있을 때 3,4를 비교하고 4,1 앞에서부터 순서대로 비교하여 정렬하는 것인지는 정확히 모르겠다.
(자바스크립트가 알아서 정렬해주니까.. 몰라도 지장이 없지만 찾아봐야겠다)
<게시판 최신순, 오래된 순>
const compare = (a, b) => {
// 내림차순(최신순)
if (type === "latest") {
return parseInt(b.date) - parseInt(a.date)
}
// 오름차순
else{
return parseInt(a.date) - parseInt(b.date)
}
}
const sortedList = myList.sort(compare);