Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp mảng theo năm và tháng JavaScript

Chúng tôi có một mảng như thế này -

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'
}]

Chúng ta phải sắp xếp mảng này theo năm theo thứ tự tăng dần (thứ tự tăng dần). Hơn nữa, nếu tồn tại hai đối tượng có cùng thuộc tính năm, thì chúng ta phải sắp xếp các năm đó theo tháng (như jan, feb, rồi diễu hành, v.v.).

Vì vậy, hãy viết mã cho vấn đề sắp xếp này. Mã hoàn chỉnh cho điều này sẽ là -

Ví dụ

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);

Chúng tôi kiểm tra xem các năm có khác nhau không, chúng tôi chỉ sắp xếp chúng theo năm, nhưng khi các năm giống nhau, chúng tôi kiểm tra các tháng nhờ sự trợ giúp của mảng tháng tùy chỉnh mà chúng tôi đã xác định và theo cách này, các đối tượng có cùng năm sẽ được sắp xếp theo tháng.

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

[
   { 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' }
]