你好,我试着过滤掉不介于两个给定日期之间的数据
我现在有这样的承诺
const p = await new Promise((resolve: any, reject: any) => {
rpCacheWrapper(options)
.then((res: any) => {
const date = _.uniq(_.map(res, 'Activity Id'));
date.filter((each: any) => {
const timeCompareStartDate = moment(
each['Start Date '] || ''
).isBetween(req.query.start as string, req.query.end as string);
const timeCompareEndDate = moment(
each['End Date'] || ''
).isBetween(req.query.start as string, req.query.end as string);
return timeCompareStartDate && timeCompareEndDate;
});
resolve(date);
})
.catch(reject);
});过滤器是不正确的,我试图找出筛选出不在这两个查询req.query.end和start之间的日期的简单方法
数据集的这个示例
{
Value: [
{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date ": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
];
}因此,如果启动时间为21-6月-2021结束=17-5月-2021,则应从数组中筛选出以下内容
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},发布于 2021-06-22 21:42:17
原始数据源需要进行一些清理,我不确定“开始日期”(在末尾有空格)是否是一个错误。我就是这样对待它的。设置此筛选器的方式是排除范围内的项。干杯
const data = {
Value: [{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
}
]
}
const range = ["2021-05-17", "2021-06-21"];
const filtered = data.Value.filter(e => !(new Date(e["Start Date"]) >= new Date(range[0]) && new Date(e["End Date"]) <= new Date(range[1])));
console.log(filtered);
https://stackoverflow.com/questions/68090828
复制相似问题