我需要检查日期值是否等于我拥有的数组中的任何日期(包括时间值)。
由于某种原因,当我遍历此数组时,angular不会让我使用getTime。如果确实使用它,则会收到错误消息:element.start.getTime不是函数。截至目前,由于数组日期和我相信的newEvent格式略有不同,因此即使存在相等的日期,该函数也始终返回false。
这是有问题的功能:
seeIfAppStartExists(appStart: Date) {
let ret = false;
this.eventsArray.forEach(element => {
// tslint:disable-next-line: triple-equals
if (element.start == appStart) {
ret = true;
}
});
return ret;
}
答案 0 :(得分:0)
如果在调用getTime()函数时收到错误消息“ .getTime不是函数”,则需要使用 new 关键字来创建新的对象实例。
let eventsArray = [{start : '2019-09-30T23:22:59.534Z'}, {start : '2019-11-30T23:22:59.534Z'}]
function seeIfAppStartExists(appStart: Date) {
let ret = false
eventsArray.forEach(element => {
let time = new Date(element.start)
if (time.getTime() === appStart.getTime()) {
ret = true;
}
});
return ret;
}
console.log(seeIfAppStartExists(new Date('2019-09-30T23:22:59.534Z')))
答案 1 :(得分:0)
您的实现存在一些问题。就像上面的答案说的那样,您可以使用new Date(element.start)
来实际获取日期对象。然后,您可以在该对象上调用getTime()
并使用它进行比较。但是逻辑上的另一个问题是如何为每次迭代更改ret
的值。本质上,您的代码只会告诉您最后一个元素的开始时间是否与您的appStart
相匹配。因为那是最后设置ret
值的那个。所有其他值将被忽略。