如何在 JavaScript 中按日期对数组进行排序
对日期数组进行排序是一种方便的单行方式,因为 在 JavaScript 中比较日期 很容易:减去 2 个日期会返回两个日期之间的差异(以毫秒为单位)。 只需减去两个日期 sort()
回调 。
const dates = [
new Date('July 20, 2021 20:17:40'),
new Date('August 19, 2021 23:15:30'),
new Date('March 13, 2021 04:20'),
new Date('October 2, 2021 11:05')
];
dates.sort((date1, date2) => date1 - date2);
/*
[
2021-03-13T09:20:00.000Z,
2021-07-21T00:17:40.000Z,
2021-08-20T03:15:30.000Z,
2021-10-02T15:05:00.000Z
]
*/
dates;
按日期属性对对象数组进行排序
同样, 对对象数组进行排序 日期属性
只需减去两个日期属性 sort()
打回来。
例如,以下是如何按以下方式对对象数组进行排序 createdAt
财产。
const d1 = new Date('2019-06-01');
const d2 = new Date('2018-06-01');
const d3 = new Date('2019-06-01');
const objects = [
{ createdAt: d1, name: 'Test 1' },
{ createdAt: d2, name: 'Test 2' },
{ createdAt: d3, name: 'Test 3' }
];
objects.sort((a, b) => a.createdAt - b.createdAt);
// [ 'Test 2', 'Test 1', 'Test 3' ]
console.log(objects.map(o => o.name));
无时间排序
您也可以不使用日期的时间部分进行排序。有几个选项,但一种方法是克隆日期并将小时、分钟、秒和毫秒使用 setHours()
功能 。
const dates = [
new Date('July 20, 2021 20:17:40'),
new Date('August 19, 2021 23:15:30'),
new Date('July 20, 2021 23:15:30'),
new Date('August 19, 2021 20:17:40')
];
// `setHours(0, 0, 0, 0)` zeroes out hours, minutes, seconds, and milliseconds
dates.sort((date1, date2) => new Date(date1).setHours(0, 0, 0, 0) - new Date(date2).setHours(0, 0, 0, 0));
/*
[
2021-07-21T00:17:40.000Z,
2021-07-21T03:15:30.000Z,
2021-08-20T03:15:30.000Z,
2021-08-20T00:17:40.000Z
]
*/
dates;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论