728x90
반응형
sort()
자바스크립트는 콜백 함수로 비교 함수를 받을 수 있다
let arr = [5,3];
arr.sort(function(a, b){
return a - b; // 오름 차순
});
console.log(arr); //[3, 5]
let arr = [5,3];
arr.sort(function(a, b){
return b - a; // 내림 차순
});
console.log(arr); //[5, 3]
sort()의 콜백 함수
- 생략 시 오름차순, ASCII 문자 순으로 정렬
- 반환 값이 0보다 작다면 a를 b보다 앞에 배치
- 반환 값이 0보다 크다면 b를 a보다 앞에 배치
- 반환 값이 0이면 현재 자리 유지
object 정렬
object의 property를 참조하여 정렬할 수 있다
const obj = {
title: "mart",
product:[
{name: "사과",
price: 100},
{name: "배",
price: 200}
]
}
obj.product.sort((a,b)=> b.price - a.price);
console.log(obj);
/*
{
title: 'mart',
product: [ { name: '배', price: 200 }, { name: '사과', price: 100 } ]
}
*/
다중 조건 정렬
const arr = [[10, 1], [6, 3], [4, 5], [4, 3], [6, 5]];
// arr[0]이 같으면 arr[1] 기준으로 오름차순 정렬
arr.sort((a, b) => {
if (a[0]===b[0]) return a[1]-b[1];
else return a[0] - b[0];
})
console.log(arr); // [[4, 3], [4, 5], [6, 3], [6, 5], [10, 1]]
const arr = [
{score: 30, num: 1},
{score: 15, num: 2},
{score: 10, num: 3},
{score: 15, num: 4},
{score: 10, num: 5},
];
arr.sort(function (a, b) {
if (a.score > b.score) return 1;
if (a.score < b.score) return -1;
if (a.num > b.num) return 1;
if (a.num < b.num) return -1;
});
console.log(arr3);
/*
[
{ score: 10, num: 3 },
{ score: 10, num: 5 },
{ score: 15, num: 2 },
{ score: 15, num: 4 },
{ score: 30, num: 1 }
]
*/
반응형
'프로그래밍 언어 > JS' 카테고리의 다른 글
JavaScript) Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 에러 (0) | 2022.04.06 |
---|---|
JavaScript) spread(전개 연산자)와 rest (0) | 2022.04.05 |
JavaScript) 문자열 자르기 - substr, sutbstring, slice (0) | 2022.04.03 |
JavaScript) 문자 반복으로 문자열 만들기 (0) | 2022.04.03 |
JavaScript) 배열 평탄화 - 2차원 배열을 1차원으로 (0) | 2022.04.03 |
댓글