Javascript jQuery$.inArray()无法正确处理使用jQuery makeArray()生成的数组
我使用以下方法创建了一个日期数组:Javascript jQuery$.inArray()无法正确处理使用jQuery makeArray()生成的数组,javascript,jquery,Javascript,Jquery,我使用以下方法创建了一个日期数组: var holidays = ["7/24/2010","7/25/2010"]; var holidaysArray = jQuery.makeArray(holidays); 然后测试数组中是否存在myDate(日期对象): if ($.inArray(myDate, holidaysArray ) == -1) {....} 然而,测试总是返回-1,即使myDate是这两天中的一天。我试图避免使用日期字符串进行测试 如何对日期对象和日期对象数组使
var holidays = ["7/24/2010","7/25/2010"];
var holidaysArray = jQuery.makeArray(holidays);
然后测试数组中是否存在myDate(日期对象):
if ($.inArray(myDate, holidaysArray ) == -1) {....}
然而,测试总是返回-1,即使myDate是这两天中的一天。我试图避免使用日期字符串进行测试
如何对日期对象和日期对象数组使用inArray函数?(我不确定holidaysArray是否实际上是一个日期对象数组,可能这就是测试失败的原因。)我想你是在比较
date
和String
对象,这就是为什么你总是得到false的原因
见:
编辑:
还有!请注意:
new Date("12/12/2000") == new Date("12/12/2000") // this is false too!
您应该像这样使用历元时间值来比较日期
new Date("12/12/2000").valueOf() == new Date("12/12/2000").valueOf() // this is TRUE
总结其他人的答案:
基本上你想要执行搜索(查找),对吗 如果您将数组的形式设置为:
var holidays = [{ date: "7/24/2010" }, { date: "7/25/2010" }];
if (!table.where([{ date: myDate }]).length) {....}
并在此基础上创建一个表,按日期索引(唯一):
然后,您可以检查表中是否存在特定日期,如下所示:
var holidays = [{ date: "7/24/2010" }, { date: "7/25/2010" }];
if (!table.where([{ date: myDate }]).length) {....}
想知道为什么要使用
jQuery.makeArray()
而holidays
已经是一个实际的数组了。Patrick是对的,你使用makeArray处理看起来像数组但不是数组的东西(比如函数中的参数
变量),我的意图是将字符串数组转换为日期对象数组。我不知道如何使用makeArray来实现这一点。myDate是一个日期对象。这不是一根绳子。我假设inArray()对这两个参数的同一类型起作用。