Jom*_* MJ 5 javascript date filter 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"}
Run Code Online (Sandbox Code Playgroud)
如果我在 2019-11-07 天(我无法从这里获取过滤器的日期),我想从上面构建一个像这样的数组,而不使用 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"}
Run Code Online (Sandbox Code Playgroud)
以下是我写的过滤器
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);
Run Code Online (Sandbox Code Playgroud)
如果我在 2019-11-07,我无法删除此项目
0: {id: 86, start_date: "2019-11-06T09:00:13Z", end_date: "2019-11-11T14:00:13Z"}
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
使用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);
Run Code Online (Sandbox Code Playgroud)
我不确定您是否真的只想包含特定日期或所选时间间隔中包含的所有项目。本示例假设是后者。
此外,您可能并不总是拥有 filterDate 对象,因此您需要添加特定的逻辑来检查它。