반응형
들어가기 사전 지식
sort()를 먼저 이해하고 진행한다.
https://cruella-de-vil.tistory.com/45
이해
sort() 안에 compareFunction을 사용해야 여러 상황에서 오름차순 및 내림차순이 가능하다.
function compare(a, b) {
if (<상황>) {
return -1; //a가 b보다 먼저 옵니다.
}
if (<상황>) {
return 1; //b가 a보다 먼저 옵니다.
}
else
return 0; //변하지 않습니다.
}
예제
아래 객체를 id를 기준하여 root가 먼저오는 오름차순으로 소팅하는 함수를 만드시오.
<body>
<script>
//아래 객체를 id를 기준하여 root가 먼저오는 오름차순으로 소팅하는 함수를 만드시오.
const account = [
{id : 'jsh', addr : '서울'},
{id : 'root2', addr : '인천'},
{id : 'ghd', addr : '광주'},
{id : 'root3', addr : '경기'},
{id : 'root5', addr : '경북'},
{id : 'rnv', addr : '세종'},
{id : 'ekz', addr : '전북'},
{id : 'gae', addr : '전남'},
{id : 'root4', addr : '전남fds'},
{id : 'root1', addr : '전남fds'}
]
const compare = function(a, b) {
if ((b.id.indexOf('root') === 0) && (a.id.indexOf('root') === 0)){
let newA = a.id.split('root')
let newB = b.id.split('root')
if (newA[1] > newB[1]){
return 1;
}
else if (newA[1] < newB[1]){
return - 1;
}
else {
return 0;
}
}
else if ((a.id.indexOf('root') === 0)){
return -1;
}
else if ((b.id.indexOf('root') === 0)){
return 1;
}
else
{
if (a.id > b.id) {
return 1;
}
else if (a.id < b.id) {
return -1;
}
else {
return 0;
}
}
};
console.log(account.sort(compare))
</script>
</body>
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] apply() (0) | 2022.04.18 |
---|---|
[JavaScript] 소숫점 자리수 정하기 toFixed() (0) | 2022.04.18 |
[JavaScript] Scope(스코프), Closure(클로저), var (0) | 2022.04.16 |
[JavaScript] sort(), 오름차순 정렬, 내림차순 정렬 (0) | 2022.04.14 |
[JavaScript] 특정 범위 랜덤수 생성하여 버블소팅하기. Math (0) | 2022.04.14 |