遍历日期数组以找出它们是否与给定的日期匹配

时间:2019-09-30 22:51:59

标签: javascript arrays angular date

我需要检查日期值是否等于我拥有的数组中的任何日期(包括时间值)。

由于某种原因,当我遍历此数组时,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;

   }

2 个答案:

答案 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值的那个。所有其他值将被忽略。