第一次我使用jQuery.inArray(),它的行为有点奇怪。

如果对象在数组中,它将返回0,但0在Javascript中是false。因此,下面将输出:"is NOT in array"

var myarray = [];
myarray.push("test");

if(jQuery.inArray("test", myarray)) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}

我将不得不改变if语句为:

if(jQuery.inArray("test", myarray)==0)

但这使得代码难以阅读。特别是对于不知道这个函数的人。他们会期望jQuery。inArray("test", myarray)当"test"在数组中时返回true。

我的问题是,为什么要这样做?我真的不喜欢这个。但这样做一定有一个很好的理由。


当前回答

美元。inArray返回找到的元素的索引,如果没有返回-1——不是布尔值。正确的是

if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
} 

其他回答

它将返回数组中该项的索引。如果没有找到,就会得到-1

只是没有人使用$而不是jQuery:

if ($.inArray(nearest.node.name, array)>=0){
   console.log("is in array");
}else{
   console.log("is not in array");
}

inArray函数返回作为第一个参数提供给函数的对象在作为第二个参数提供给函数的数组中的索引。

当inArray返回0时,表示第一个参数位于所提供数组的第一个位置。

在if语句中使用inArray:

if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}

当传递给函数的第一个参数在作为第二个参数传递的数组中没有找到时,inArray返回-1。

inArray返回数组中元素的索引,而不是指示该元素是否存在于数组中的布尔值。如果未找到该元素,则返回-1。

因此,要检查数组中是否有项,使用:

if(jQuery.inArray("test", myarray) !== -1)

伙计,去看看医生。

例如:

var arr = [ 4, "Pete", 8, "John" ];
console.log(jQuery.inArray( "John", arr ) == 3);