带有函数$ .inArray的jQuery 1.9.1中的错误

时间:2014-03-03 06:35:29

标签: javascript jquery

我最近得出的结论是$ .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?");

2 个答案:

答案 0 :(得分:5)

jQuery的$.inArray方法返回找到值的索引,如果找不到则返回-1。碰巧-1是真实的(通过运行!!-1将其转换为布尔值),这将评估为真。为了更可靠地使用此方法,请比较其返回值,而不是仅将其用作条件:

if ( $.inArray(14, ["1", "15"]) > -1 ) {
    alert( "Value has been found" );
}

online documentation中已明确说明了这一点。

如果您在使用此方法时正在寻找更简单的约定,则可以反转操作数的位并将-1转换为00转换为-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不是假的。