我最近得出的结论是$ .inArray不起作用。 我到处研究,看到类似的线程jQuery: why doesn't jQuery.inArray() work?
但我仍然认为它是一个jQuery Bug。 因为我有一个我在$ .inArray中使用的ARRAY
这是console.log
var testArray 值为:
["1", "15"]
这显然是JavaScript中的一个数组。
我正在使用命令
if($.inArray(14, testArray))
alert("14 should not be in array. Isn't it?");
我也试过以下,但同样的问题:
if(jQuery.inArray('14', testArray))
alert("14 should not be in array. Isn't it?");
答案 0 :(得分:5)
jQuery的$.inArray
方法返回找到值的索引,如果找不到则返回-1
。碰巧-1
是真实的(通过运行!!-1
将其转换为布尔值),这将评估为真。为了更可靠地使用此方法,请比较其返回值,而不是仅将其用作条件:
if ( $.inArray(14, ["1", "15"]) > -1 ) {
alert( "Value has been found" );
}
online documentation中已明确说明了这一点。
如果您在使用此方法时正在寻找更简单的约定,则可以反转操作数的位并将-1
转换为0
和0
转换为-1
:
if ( ~$.inArray(14, ["1", "15"]) )
答案 1 :(得分:4)
$.inArray
会返回-1
。所以jQuery isArray
确实可以正常工作。这就是你运行测试代码时的原因:
if ($.inArray(14, testArray)) {
alert("14 should not be in array. Isn't it?");
}
你看到了警报。当然,因为-1
不是假的。