检查日期是否属于日期数组

foo*_*zed 9 javascript arrays jquery date

我正在尝试检查jQuery UI datepicker中的日期是否属于假日日期数组.无法弄清楚我做错了什么:(

var holidayArray2013 = [new Date('October 3, 2013 00:00:00 GMT+0200'), new Date('December 25, 2013 00:00:00 GMT+0100'), new Date('December 26, 2013 00:00:00 GMT+0100')];
var DateOfOrder = $('#datepicker').datepicker('getDate');
if ($.inArray(DateOfOrder, holidayArray2013) > -1) {
  console.log("is holiday");
}
Run Code Online (Sandbox Code Playgroud)

编辑:console.log(DateOfOrder);返回Thu Oct 03 2013 00:00:00 GMT+0200就像holidayArray2013[0]$.inArray(DateOfOrder, holidayArray2013)仍然返回-1

Jam*_*iec 21

你得到一个假阴性,因为比较2个日期对象比较他们的引用而不是你想象的.

有几个选项,您可以将结果存储Date.getTime()在数组中,这只是日期的数字表示:

var holidayArray2013 = [
        new Date('October 3, 2013 00:00:00 GMT+0200').getTime(), 
        new Date('December 25, 2013 00:00:00 GMT+0100').getTime(), 
        new Date('December 26, 2013 00:00:00 GMT+0100').getTime()];
Run Code Online (Sandbox Code Playgroud)

然后比较一下:

var DateOfOrder = n$('#datepicker').datepicker('getDate').getTime();
if ($.inArray(DateOfOrder, holidayArray2013) > -1) ...
Run Code Online (Sandbox Code Playgroud)

这很好,如下所示:http://jsfiddle.net/rRJer/

但是,如果您被限制为不更改假日数组,则可以循环以尝试找到正确的日期值:

var isHoliday = false;
for(var i=0;i<holidayArray2013.length;i++){
    if(holidayArray2013[i].getTime() == DateOfOrder.getTime()){
        isHoliday = true;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

演示在这里:http://jsfiddle.net/3R6GD/