如何检查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"))
假
为什么?
答案 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")
生成无效日期