按年和月對 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'
}]

我們必須按升序(升序)對該陣列按年份進行排序。此外,如果存在兩個具有相同年份屬性的物件,則我們必須按月份(如一月、二月、三月等)對這些年份進行排序。

所以,讓我們編寫這個排序問題的程式碼。其完整程式碼如下 −

示例

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

更新於:20-Aug-2020

3 千+瀏覽量

啟動你的 職業

完成課程獲取認證

開始吧
廣告
© . All rights reserved.