基於日文對物件進行排序 - JavaScript


假設我們有一個物件陣列,其中包含一週七天的溼度資料。不過,目前資料在陣列中是隨機的。我們應該按照星期幾對物件陣列進行排序,比如週一的排在最前面,然後是週二、週三和週日。

以下是我們的陣列 −

const weather = [{
   day: 'Wednesday',
   humidity: 60
}, {
   day: 'Saturday',
   humidity: 50
}, {
   day: 'Thursday',
   humidity: 65
}, {
   day: 'Monday',
   humidity: 40
}, {
   day: 'Sunday',
   humidity: 35
}, {
   day: 'Friday',
   humidity: 80
}, {
   day: 'Tuesday',
   humidity: 45
}];

解決這個問題的關鍵是建立對映物件,將一週特定幾天對映到相應的索引。它看起來像是 −

const map = {
   'Monday': 1,
   'Tuesday': 2,
   'Wednesday': 3,
   'Thursday': 4,
   'Friday': 5,
   'Saturday': 6,
   'Sunday': 7
};

現在可以明確地採用 Array.prototype.sort() 方法,傳遞自定義回撥,根據對映中的索引對物件進行排序。

完整的程式碼如下 −

示例

const weather = [{
   day: 'Wednesday',
   humidity: 60
}, {
   day: 'Saturday',
   humidity: 50
}, {
   day: 'Thursday',
   humidity: 65
}, {
   day: 'Monday',
   humidity: 40
}, {
   day: 'Sunday',
   humidity: 35
}, {
   day: 'Friday',
   humidity: 80
}, {
   day: 'Tuesday',
   humidity: 45
}];
const map = {
   'Monday': 1,'Tuesday': 2,'Wednesday': 3,'Thursday': 4,'Friday': 5,'Saturday': 6,
   'Sunday': 7
};
weather.sort((a, b) => {
   return map[a.day] - map[b.day];
});
console.log(weather);

輸出

此程式碼的輸出如下 −

[
   { day: 'Monday', humidity: 40 },
   { day: 'Tuesday', humidity: 45 },
   { day: 'Wednesday', humidity: 60 },
   { day: 'Thursday', humidity: 65 },
   { day: 'Friday', humidity: 80 },
   { day: 'Saturday', humidity: 50 },
   { day: 'Sunday', humidity: 35 }
]

更新日期:2020-08-19

2K+ 瀏覽量

開啟你的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.