按年份和月份对数组进行排序 JavaScript

javascriptweb developmentobject oriented programming更新于 2025/9/30 7:40:17

我们有一个像这样的数组 −

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

我们必须按年份升序(递增顺序)对这个数组进行排序。此外,如果存在两个具有相同年份属性的对象,那么我们必须按月份对这些年份进行排序(例如 1 月、2 月、3 月等)。

那么,让我们为这个排序问题编写代码。完整的代码如下 −

示例

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

相关文章


有用资源