nba*_*bar 322 javascript jquery
我第一次工作,jQuery.inArray()它有点奇怪.
如果对象在数组中,它将返回0,但在Javascript中0为false.所以以下将输出:"不在数组中"
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)
但这使得代码难以理解.特别是对于不了解这个功能的人.当"test"在数组中时,他们会期望jQuery.inArray("test",myarray)给出true.
所以我的问题是,为什么这样做?我真的不喜欢这个.但必须有一个很好的理由这样做.
Den*_*nis 683
inArray返回数组中元素的索引,而不是指示数组中是否存在该项的布尔值.如果未找到该元素,-1将返回.
因此,要检查项目是否在数组中,请使用:
if(jQuery.inArray("test", myarray) !== -1)
Jon*_*Jon 42
$.inArray如果找到则返回元素的索引,如果不是则返回-1  - 不是布尔值.所以正确的是
if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
} 
Pat*_*ssa 25
答案来自文档检查的第一段,如果结果大于-1,而不是它是真还是假.
$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1.如果数组中的第一个元素与value匹配,则$ .inArray()返回0.
因为JavaScript将0视为松散等于false(即0 == false,但是0!== false),如果我们检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1.
650*_*502 21
使用正确的方法inArray(x, arr)是不使用它在所有的,并使用替代arr.indexOf(x).
官方标准名称也更清楚,因为返回的值是一个索引,因此如果传递的元素是你将获得的第一个元素0(在Javascript中是假的).
(请注意,arr.indexOf(x)是无法在Internet Explorer,直到IE9支持,所以如果你需要支持IE8和更早的版本,这将无法工作,而jQuery函数是一个更好的选择.)
小智 13
inArray返回数组中元素的索引。如果未找到该元素,则返回 -1,否则返回元素索引。
if(jQuery.inArray("element", myarray) === -1) {
    console.log("Not exists in array");
} else {
    console.log("Exists in array");
}
Jas*_*son 11
或者,如果您想要有点花哨,可以使用按位非(〜)和逻辑非(!)运算符将inArray函数的结果转换为布尔值.
if(!!~jQuery.inArray("test", myarray)) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}
我经常使用
if(!(jQuery.inArray("test", myarray) < 0))
要么
if(jQuery.inArray("test", myarray) >= 0)
小智 8
jQuery inArray()方法用于搜索数组中的值并返回其索引而不是布尔值.如果未找到该值,则返回-1.
因此,要检查数组中是否存在值,请遵循以下惯例:
myArray = new Array("php", "tutor");
if( $.inArray("php", myArray) !== -1 ) {
    alert("found");
}
该inArray函数返回作为第一个参数提供的对象的索引,该对象作为函数的第二个参数提供的数组中的函数.
当inArray返回0它表明的第一个参数是在所提供的阵列的第一位置上被发现.
要inArray在if语句中使用,请使用:
if(jQuery.inArray("test", myarray) != -1) {
    console.log("is in array");
} else {
    console.log("is NOT in array");
}
inArray-1传递给函数的第一个参数在作为第二个参数传递的数组中找不到时返回.
而不是使用jQuery.inArray()你也可以使用includesint数组的方法:
var array1 = [1, 2, 3];
console.log(array1.includes(2));
// expected output: true
var pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('cat'));
// expected output: true
console.log(pets.includes('at'));
// expected output: false
检查官爵这里
| 归档时间: | 
 | 
| 查看次数: | 478508 次 | 
| 最近记录: |