jQuery $ .inArray()返回0

时间:2011-04-28 23:20:54

标签: javascript jquery arrays

如果你有一个像('a', 'b')这样的数组并检查$.inArray('a', thearray);你得到的索引是0,可能是假的。所以你需要进一步检查结果,这很烦人......

是否有一个快速的方法槽,我只能得到真/假,而不是索引?

基本上我在html5数据属性中有一个字符串:data-options="a,b,c"和javascript中的3个a,b,c个变量必须根据内部数据选项获取真/假值...

3 个答案:

答案 0 :(得分:7)

您可以通过调用binary NOT运算符来实现此目的。

if( ~$.inArray('a', thearray) ) {
}

在此详细解释:typeofnan.blogspot.com/2011/04/did-you-know-episode-ii.html

答案 1 :(得分:6)

针对-1进行测试:

$.inArray('a', arr) !== -1

上面的表达式将返回true / false。

  

因为JavaScript将0视为松散   等于假(即0 ==假,但为0   !== false),如果我们正在检查   我们在数组中存在值   需要检查它是否不等于(或   大于)-1。

来源:http://api.jquery.com/jQuery.inArray/

答案 2 :(得分:4)

是的,与-1相比。

if ($.inArray('a', thearray) === -1) {
    // not found
}

如果它真的让你烦恼,你可以将它包装到另一个函数中:

function myInArray(needle, haystack) {
    return $.inArray(needle, haystack) !== -1;
}