Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

연도 및 월별로 배열 정렬 JavaScript

<시간/>

다음과 같은 배열이 있습니다 -

const arr = [{
   year: 2020,
   month: 'January'
}, {
   year: 2017,
   month: 'March'
}, {
   year: 2010,
   month: 'January'
}, {
   year: 2010,
   month: 'December'
}, {
   year: 2020,
   month: 'April'
}, {
   year: 2017,
   month: 'August'
}, {
   year: 2010,
   month: 'February'
}, {
   year: 2020,
   month: 'October'
}, {
   year: 2017,
   month: 'June'
}]

이 배열을 연도에 따라 오름차순(오름차순)으로 정렬해야 합니다. 또한 같은 연도 속성을 가진 두 개의 개체가 있는 경우 해당 연도를 월에 따라 정렬해야 합니다(예:jan, 다음 feb, 다음 March 등).

따라서 이 정렬 문제에 대한 코드를 작성해 보겠습니다. 이에 대한 완전한 코드는 -

예시

const arr = [{
   year: 2020,
   month: 'January'
}, {
   year: 2017,
   month: 'March'
}, {
   year: 2010,
   month: 'January'
}, {
   year: 2010,
   month: 'December'
}, {
   year: 2020,
   month: 'April'
}, {
   year: 2017,
   month: 'August'
}, {
   year: 2010,
   month: 'February'
}, {
   year: 2020,
   month: 'October'
}, {
   year: 2017,
   month: 'June'
}]
const months = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
const sorter = (a, b) => {
   if(a.year !== b.year){
      return a.year - b.year;
   }else{
      return months.indexOf(a.month) - months.indexOf(b.month);
   };
};
arr.sort(sorter);
console.log(arr);

연도가 다른지 확인하고 연도별로 정렬하지만 연도가 같으면 정의한 사용자 지정 월 배열을 사용하여 월을 확인하고 이와 같이 연도가 같은 개체를 월별로 정렬합니다.

출력

콘솔의 출력은 -

[
   { year: 2010, month: 'January' },
   { year: 2010, month: 'February' },
   { year: 2010, month: 'December' },
   { year: 2017, month: 'March' },
   { year: 2017, month: 'June' },
   { year: 2017, month: 'August' },
   { year: 2020, month: 'January' },
   { year: 2020, month: 'April' },
   { year: 2020, month: 'October' }
]