본문 바로가기

Dev/JavaScript

javascript - 객체 정렬

728x90

개발을 하다보면 가장 많이 쓰이는 함수가 정렬이 아닐까 싶다.

그리고 정렬은 각 언어들마다 조금씩 쓰는 법이 달라서 이번 기회에 자바스크립트의 정렬에 대해 정리하고자 한다.

 

const user = [
   { name: '홍길동', age: 40 },
   { name: '임꺽정', age: 12 },
   { name: '주몽', age: 23 },
   { name: '척준경', age: 88 },
];

// 나이순 오름차순
const result1 = user.sort((a, b) => a.age - b.age); 
console.log('result1: ', result1);
/*
  { name: '임꺽정', age: 12 },
  { name: '주몽', age: 23 },
  { name: '홍길동', age: 40 },
  { name: '척준경', age: 88 }
*/

// 나이순 내림차순
const result2 = user.sort((a, b) => b.age - a.age); 
console.log('result2: ', result2);
/*
  { name: '척준경', age: 88 },
  { name: '홍길동', age: 40 },
  { name: '주몽', age: 23 },
  { name: '임꺽정', age: 12 }
*/

 

a, b 는 현재 객체가 들어가고 양수이면 false, 음수이면 true로 처리되어 만약 오름차로 만들고 싶으면 마이너스가 나오도록 , 내림차로 만들고 싶으면 양수가 나오게 만들면 된다. 

 

다만 문자열 순서대로 정렬하는 법이 조금 다른데 다음과 같다.

 

// 이름순 오름차순
const result1 = user.sort((a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1);
console.log('result1: ', result1);
/*
  { name: '임꺽정', age: 12 },
  { name: '주몽', age: 23 },
  { name: '척준경', age: 88 },
  { name: '홍길동', age: 40 }
*/

// 이름순 내림차순
const result2 = user.sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? -1 : 1);
console.log('result2: ', result2);
/*
  { name: '홍길동', age: 40 },
  { name: '척준경', age: 88 },
  { name: '주몽', age: 23 },
  { name: '임꺽정', age: 12 }
*/

 

먼저 모두 소문자 혹은ㄷ ㅐ문자로 바꾼 후 크기를 비교하여 1 혹은 -1을 나오게 만들면 된다. a가 더 크게 (내림차로) 만들고 싶으면 a가 클 때 음수를 나오게 만들면 된다.