jQuery.inArray(),如何使用它的权利?
我第一次使用jQuery.inArray()
,它有点奇怪。
如果对象在数组中,它将返回0,但在Javascript中为0。 所以下面会输出: “不在数组中”
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)
但是这使得代码不可读。 特别是对于不知道这个function的人。 他会希望jQuery.inArray(“test”,myarray)在“test”在数组中时赋予true。
所以我的问题是,为什么这样做呢? 我真的不喜欢这个。 但是这样做肯定有一个很好的理由。
inArray
返回数组中元素的索引,而不是指示数组中是否存在该项的布尔值。 如果找不到元素,则返回-1
。
所以,要检查一个项目是否在数组中,使用:
if(jQuery.inArray("test", myarray) !== -1)
$.inArray
返回元素的索引 ,如果找不到$.inArray
返回-1 – 不是布尔值。 所以正确的是
if(jQuery.inArray("test", myarray) != -1) { console.log("is in array"); } else { console.log("is NOT in array"); }
答案来自文档检查的第一段,如果结果大于-1,而不是如果它是真或假。
$ .inArray()方法类似于JavaScript的本地.indexOf()方法,因为它在找不到匹配项时返回-1。 如果数组中的第一个元素匹配值,$ .inArray()返回0。
因为JavaScript将0视为大致等于false(即0 == false,但是0!== false),所以如果我们检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1。
使用inArray(x, arr)
的正确方法是根本不使用它,而是使用arr.indexOf(x)
。
官方的标准名称也更清晰,因为返回的值是一个索引,因此如果传递的元素是第一个元素,你将返回一个0
(这是JavaScript中的falsy)。
(请注意, 在IE9之前 , Internet Explorer中不支持 arr.indexOf(x)
,所以如果您需要支持IE8及更早版本,这将不起作用,并且jQuery函数是一个更好的select。
或者,如果你想得到一些幻想,你可以使用按位不是(〜)和逻辑非(!)运算符来将inArray函数的结果转换为布尔值。
if(!!~jQuery.inArray("test", myarray)) { console.log("is in array"); } else { console.log("is NOT in array"); }
inArray
函数将作为第一个参数提供的对象的索引返回给作为函数的第二个参数提供的数组中的函数。
当inArray
返回0
,表示在提供的数组的第一个位置find第一个参数。
要在if语句中使用inArray
,请使用:
if(jQuery.inArray("test", myarray) != -1) { console.log("is in array"); } else { console.log("is NOT in array"); }
当传递给函数的第一个参数在作为第二个parameter passing的数组中找不到时, inArray
将返回-1
。
我通常使用
if(!(jQuery.inArray("test", myarray) < 0))
要么
if(jQuery.inArray("test", myarray) >= 0)
jQuery inArray()方法用于search数组中的值,并返回其索引而不是布尔值。 如果没有find该值,它将返回-1。
因此,要检查数组中是否存在一个值,请按照下面的做法:
myArray = new Array("php", "tutor"); if( $.inArray("php", myArray) !== -1 ) { alert("found"); }
参考
jQuery.inArray()返回数组中项目的索引,如果找不到项目,则返回-1。 在这里阅读更多: jQuery.inArray()
它将返回数组中项目的索引。 如果没有find,你会得到-1
如果我们想要检查一个元素是否在一组元素中,我们可以这样做:
var checkboxes_checked = $('input[type="checkbox"]:checked'); // Whenever a checkbox or input text is changed $('input[type="checkbox"], input[type="text"]').change(function() { // Checking if the element was an already checked checkbox if($.inArray( $(this)[0], checkboxes_checked) !== -1) { alert('this checkbox was already checked'); } }
/^(one|two|tree)$/i.test(field) // field = Two; // true /^(one|two|tree)$/i.test(field) // field = six; // false /^(раз|два|три)$/ui.test(field) // field = Три; // true
这对检查dynamicvariables很有用。 这种方法很容易阅读。
只是没有人使用$
而不是jQuery
:
if ($.inArray(nearest.node.name, array)>=0){ console.log("is in array"); }else{ console.log("is not in array"); }
男人,检查文档 。
例如:
var arr = [ 4, "Pete", 8, "John" ]; console.log(jQuery.inArray( "John", arr ) == 3);