【发布时间】:2022-01-12 00:38:09
【问题描述】:
我有一组与事件相关的对象。事件按键/值组织,其中键是月初的日期时间,值是数组或在该月内具有特定日期时间的对象。
allEvents = [
{
key: "Dec 2021",
value: [
{ id: 0, date: "Dec 06 2021" },
{ id: 1, date: "Dec 01 2021" },
],
},
{
key: "Nov 2021",
value: [
{ id: 0, date: "Nov 27 2021" },
{ id: 1, date: "Nov 23 2021" },
{ id: 2, date: "Nov 10 2021" },
],
},
{
key: "Oct 2021",
value: [
{ id: 0, date: "Oct 27 2021" },
{ id: 1, date: "Oct 23 2021" },
{ id: 2, date: "Oct 10 2021" },
],
},
];
我需要按给定的日期范围过滤这些事件,例如 2021 年 11 月 15 日 - 2021 年 12 月 4 日
这应该过滤掉十月对象以及在给定日期范围内的任何事件,同时保留父对象。 所以结果是:
filteredEvents = [
{
key: "Dec 2021",
value: [
{ id: 1, date: "Dec 01 2021" },
],
},
{
key: "Nov 2021",
value: [
{ id: 0, date: "Nov 27 2021" },
{ id: 1, date: "Nov 23 2021" },
],
},
];
到目前为止,我已经在月级别完成了如下过滤,但无法弄清楚如何处理日级别。
const dateRange = ["Nov 15 2021", "Dec 04 2021"];
const min = dateRange[0].getTime();
const max = dateRange[1].getTime();
const filteredEvents = allEvents.filter(
eventGroup => new Date(eventGroup.key).getTime() >= min && new Date(eventGroup.key).getTime() <= max);
理想情况下只想使用 ES6,但可以使用 lodash。
【问题讨论】:
标签: javascript arrays object