자바스크립트에서 하나의 배열 안에 여러개의 객체를 담아서 관리하는 경우가 종종 있다. 이 때, 배열 내부의 객체 요소들을 정렬하기 위해서는 어떻게 해야할까?
배열 내부의 객체 요소들을 정렬하는 기준은 객체의 특정 속성일 수 있다.
user 객체배열 정렬하기
const user = [
{ name: '장원영', age: 21 },
{ name: '안유진', age: 25 },
{ name: '설윤', age: 34 },
{ name: '민지', age: 88 },
];
위와 같이, user라는 객체 배열을 정렬한다고 가정하자. 각 원소의 속성들을 보면 age라는 숫자값과 name이라는 스트링값이 있다.
이 age와 name속성을 기준으로 각각 나이순, 이름순으로 객체들을 정렬할 수 있다.
나이순 정렬
//나이순 오름차순
const result1 = user.sort((a,b)=> a.age-b.age);
console.log("result1:",result1)
/*
result1: [
{ name: '장원영', age: 21 },
{ name: '안유진', age: 25 },
{ name: '설윤', age: 34 },
{ name: '민지', age: 88 }
]
*/
//나이순 내림차순
const result2 = user.sort((a,b)=> b.age-a.age);
console.log("result2:",result2)
/*
result2: [
{ name: '민지', age: 88 },
{ name: '설윤', age: 34 },
{ name: '안유진', age: 25 },
{ name: '장원영', age: 21 }
]
*/
이름순 정렬
// 이름순 오름차순
const result1 = user.sort((a,b)=> a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1)
console.log("result1",result1)
/*
result1 [
{ name: '민지', age: 88 },
{ name: '설윤', age: 34 },
{ name: '안유진', age: 25 },
{ name: '장원영', age: 21 }
]
*/
// 이름순 내림차순
const result2 = user.sort((a,b)=> a.name.toLowerCase() > b.name.toLowerCase() ? -1 : 1)
console.log("result2",result2)
/*
result2 [
{ name: '장원영', age: 21 },
{ name: '안유진', age: 25 },
{ name: '설윤', age: 34 },
{ name: '민지', age: 88 }
]
*/