根据日期名称对对象进行排序 JavaScript

javascriptweb developmentobject oriented programming更新于 2025/9/26 2:20:17

假设我们有一个对象数组,其中包含一周七天的湿度数据。但是,数据现在随机位于数组中。我们应该根据日期对对象数组进行排序,例如星期一的数据排在第一位,然后是星期二、星期三,最后是星期日。

以下是我们的数组 −

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

相关文章


有用资源