Javascript数组无法正常工作?困惑

Lee*_*Lee 0 javascript jquery jquery-ui datepicker

任何人都知道为什么这不会超过1个日期...

它只需要数组中的第一个日期......

var unavailableDates = ["10-6-2011","13-6-2011"];

function unavailable(date) {
    dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) == 0) {
        return [false, "", "Unavailable"];
    } else {
        var day = date.getDay();
        return [(day != 0 && day != 2 && day != 3 && day != 4 && day != 6)];
    }
}
Run Code Online (Sandbox Code Playgroud)

看下面的完整示例

http://offline.raileisure.com/lee.php

提前致谢

背风处

Poi*_*nty 8

它不起作用,因为你正确地解释了"$ .inArray()"的返回值.当找不到搜索目标时,该函数返回-1,而当它可以时,该函数返回数组中的索引.因此,当它返回0时,这意味着它确实找到了代码所寻找的内容.

一个可爱的技巧 - 对于喜欢可爱技巧的人来说 - 检查"$ .inArray()"等函数的返回值是应用"〜"运算符:

if (~$.inArray(needle, haystack)) {
  // found it
}
else {
  // did not find it
}
Run Code Online (Sandbox Code Playgroud)

"〜"运算符形成其参数的按位补码(或"1的补码").因为"〜-1"为0,并且"~n"对于任何其他整数都不为零,所以它有效地将返回值转换为"truthy/falsy"值.如果你不喜欢可爱的技巧,请不要使用它:-)

此外,应该使用var关键字在每个函数中声明一对函数中使用的"dmy"变量.