새소식

FE/JavaScript

[Javascript] 객체로 구성된 배열 정렬하기

  • -

자바스크립트에서 하나의 배열 안에 여러개의 객체를 담아서 관리하는 경우가 종종 있다. 이 때, 배열 내부의 객체 요소들을 정렬하기 위해서는 어떻게 해야할까?

 

배열 내부의 객체 요소들을 정렬하는 기준은 객체의 특정 속성일 수 있다.

 

 

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 }
]
*/

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.