我有一张地图:
for (let jobInArray of jobs) {
// lets me get rid of time, outputs to YYYY-MM-dd
let deliveryDateString: string = new Date(jobInArray.DeliveryDate).toLocaleDateString("en-us");
if (dateJobsMap.has(deliveryDateString)) {
let jobsForDate: IDeliveryJob[] = dateJobsMap.get(deliveryDateString);
jobsForDate.push(jobInArray);
}
else {
dateJobsMap.set(deliveryDateString, [jobInArray]);
}
}
给我:
dateJobsSortedMap: Map(12) {"8/23/2018" => Array(14), "8/22/2018" => Array(19),...
我要删除任何比当前日期早的条目。
我尝试过:
let foobar = [...dateJobsMap.keys()].filter((item: string) => {
console.log("item: ", item);
let temp = new Date(item);
return temp >= new Date();
});
但是返回空。它应该返回今天的项目(2018年8月23日)。
有什么建议吗?
答案 0 :(得分:2)
问题是,当您从m/dd/yyyy
模板创建日期时,其小时,分钟和秒将始终为00:00:00
,但是当您创建带有空输入参数的日期时-始终是当前的小时,分钟和秒。因此,您可以这样做:
let foobar = [...dateJobsMap.keys()].filter((item: string) => {
console.log("item: ", item);
let temp = new Date(item + " 23:59:59");
return temp >= new Date();
});
答案 1 :(得分:1)
或将比较日期的小时数设置为0
let data = [["8/23/2018", Array(14)],["8/22/2018", Array(14)],["8/21/2018", Array(14)]];
let map = new Map(data);
let foobar = [...map.keys()].filter(item => {
let temp = new Date(item)
return temp >= new Date().setHours(0,0,0,0)
});
console.log(foobar);