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

总结其他人的答案:

  • 您已经有了一个数组,不需要使用makeArray()
  • 数组不包含日期,它包含字符串
  • 在JavaScript中不能直接比较日期

  • 基本上你想要执行搜索(查找),对吗

    如果您将数组的形式设置为:

    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()对这两个参数的同一类型起作用。