2014-03-03 24 views
2

我最近得出结论,$ .inArray不起作用。 我到处研究,看到类似的线程jQuery: why doesn't jQuery.inArray() work?

但我仍然认为它是一个jQuery错误。 因为我有我正在使用$ .inArray

这里是的console.log

VAR testArray值是一个数组:

["1", "15"] 

这是obvisouly在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

你忘了问一个问题.. ! –

+0

我已更新相同。 :) – Thompson

回答

5

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

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

这在online documentation得很清楚。

如果你使用这种方法时,寻找一个简单的约定,可以反转操作数的位和转换-100-1

if (~$.inArray(14, ["1", "15"])) 
4

$.inArray回报-1如果找不到项目。所以jQuery isArray确实工作正常。这就是为什么当你运行你的测试代码:

if ($.inArray(14, testArray)) { 
    alert("14 should not be in array. Isn't it?"); 
} 

你看到的警报。当然,因为-1不是麻烦的。