【问题标题】:Bug in jQuery 1.9.1 with function $.inArray带有函数 $.inArray 的 jQuery 1.9.1 中的错误
【发布时间】:2014-04-04 02:42:21
【问题描述】:

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

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

这是控制台日志

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?");

【问题讨论】:

  • 你忘了问问题..!
  • 我也更新了。 :)

标签: javascript jquery


【解决方案1】:

$.inArray 如果未找到项目,则返回 -1。所以 jQuery isArray 确实可以正常工作。这就是为什么当您运行测试代码时:

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

您会看到警报。当然,因为-1 不是假的。

【讨论】:

    【解决方案2】:

    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"]) )
    

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2011-05-09
      • 2013-03-28
      相关资源
      最近更新 更多