Javascript 循环遍历日期数组,找出其中是否有与给定日期匹配的日期
我需要检查日期值是否等于数组中的任何日期(包括时间值) 出于某种原因,当我循环这个数组时,angular不允许我使用getTime。如果我使用它,我会得到错误:element.start.getTime不是一个函数。到目前为止,因为数组日期和我认为的newEvent的格式略有不同,所以即使有相同的日期,函数也总是返回false 以下是所讨论的功能:Javascript 循环遍历日期数组,找出其中是否有与给定日期匹配的日期,javascript,arrays,angular,date,Javascript,Arrays,Angular,Date,我需要检查日期值是否等于数组中的任何日期(包括时间值) 出于某种原因,当我循环这个数组时,angular不允许我使用getTime。如果我使用它,我会得到错误:element.start.getTime不是一个函数。到目前为止,因为数组日期和我认为的newEvent的格式略有不同,所以即使有相同的日期,函数也总是返回false 以下是所讨论的功能: seeIfAppStartExists(appStart: Date) { let ret = false; this.e
seeIfAppStartExists(appStart: Date) {
let ret = false;
this.eventsArray.forEach(element => {
// tslint:disable-next-line: triple-equals
if (element.start == appStart) {
ret = true;
}
});
return ret;
}
如果在调用getTime()函数时出现错误“.getTime不是函数”,则需要使用new关键字来创建新的对象实例
您的实现存在一些问题。正如上面的答案所说,您可以使用
newdate(element.start)
来实际获取日期对象。然后可以对该对象调用getTime()
,并使用它进行比较。但是逻辑的另一个问题是如何为每次迭代更改ret
的值。本质上,您的代码只会告诉您最后一个元素的开始时间是否与appStart
匹配。因为这是在最后设置ret
值的方法。所有其他值都将被忽略 听起来像元素。start
是字符串,而不是日期对象。根据提供一个可运行的示例
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')))