gpt4 book ai didi

javascript - 使用javascript根据开始和结束日期过滤数组

转载 作者:行者123 更新时间:2023-11-30 06:11:20 25 4
gpt4 key购买 nike

我有一个包含开始日期和结束日期的数据数组,这些数据显示在 Angular 日历中。我想根据开始和结束日期过滤数组。

0: {id: 86, start_date: "2019-11-06T09:00:13Z", end_date: "2019-11-11T14:00:13Z"}
1: {id: 86, start_date: "2019-11-04T18:30:00Z", end_date: "2019-11-07T07:12:09Z"}
2: {id: 86, start_date: "2019-11-04T18:30:00Z", end_date: "2019-11-07T07:03:21Z"}
3: {id: 86, start_date: "2019-11-26T18:30:00Z", end_date: "2019-11-27T07:03:21Z"}
4: {id: 66, start_date: "2019-11-04T18:30:00Z", end_date: "2019-11-07T07:12:09Z"}
5: {id: 66, start_date: "2019-11-05T18:30:00Z", end_date: "2019-11-12T07:03:21Z"}

如果我在 2019 年 11 月 7 日(我无法从这里获取过滤日期)我想在不使用 2019-11-07 的情况下从上面构建一个这样的数组

0: {id: 86, start_date: "2019-11-06T09:00:13Z", end_date: "2019-11-11T14:00:13Z"}
1: {id: 66, start_date: "2019-11-04T18:30:00Z", end_date: "2019-11-07T07:12:09Z"}

下面是我写的过滤器

data.forEach((item, index) => {
if (index !== data['results'].findIndex(i => i.id === item.id &&
new Date(i.start_date).toDateString() === new Date(item.start_date).toDateString() &&
new Date(i.end_date).toDateString() === new Date(item.end_date).toDateString())) {
data.splice(index, 1);
}
});
console.log(data);

如果我在 2019-11-07,我无法删除此项目

0: {id: 86, start_date: "2019-11-06T09:00:13Z", end_date: "2019-11-11T14:00:13Z"}

谁能帮帮我?

最佳答案

使用filter代替forEach:

const filterDate = {
start_date: "2019-11-07T09:00:13Z",
end_date: "2019-11-07T09:00:13Z",
};

const filteredItems = data.filter((item, index) => item.start_date >= filterDate.start_date && item.end_date <= filterDate.end_date);

我不确定您是真的只想包含特定日期还是包含在选定时间间隔内的所有项目。本示例假设是后者。

此外,您可能并不总是拥有 filterDate 对象,因此您想添加特定的逻辑来检查它。

关于javascript - 使用javascript根据开始和结束日期过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58748453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com