如何在 JavaScript 中按日期对数组进行排序

发布于 2022-08-16 22:13:08 字数 2067 浏览 146 评论 0

对日期数组进行排序是一种方便的单行方式,因为 在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

舂唻埖巳落

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文