检查阵列是否包含日期

时间:2017-10-26 14:17:45

标签: javascript

如何检查array是否包含date

const dateArr = [new Date("12-12-2012"), new Date("06-06-2006"), new Date("01-01-2001")]

dateArr.includes(new Date("12-12-2012"))
  

为什么?

1 个答案:

答案 0 :(得分:2)

每次拨打new Date("12-12-2012")时,都会创建一个新对象。这些对象碰巧在其中具有相同的值,但它们是不同的对象。 dateArray.includes将检查引用标识,并且检查失败,因为它们是不同的对象。

如果要检查是否存在与某些条件匹配的元素,可以使用array.find,并指定应该计为"等于":



const dateArr = [new Date(1), new Date(2), new Date(3)]

const testDate = new Date(1);
const match = dateArr.find(d => d.getTime() === testDate.getTime())
const hasMatch = !!match; // convert to boolean
console.log(hasMatch);




PS,你应该避免使用datetrings构建日期,因为浏览器之间存在不一致。例如,在Firefox上,new Date("12-12-2012")生成无效日期