Jquery,检查数组中是不是存在值[重复]

Posted

技术标签:

【中文标题】Jquery,检查数组中是不是存在值[重复]【英文标题】:Jquery, checking if a value exists in array or not [duplicate]Jquery,检查数组中是否存在值[重复] 【发布时间】:2011-12-14 10:09:25 【问题描述】:

我相信对于那些玩过 java script / jquery 的人来说这个问题会相当容易。

var arr = new Array();

$.map(arr, function() 
 if (this.id == productID) 
   this.price = productPrice;
 else 
  arr.push(id: productID, price: productPrice)
 

我猜上面的代码以非常简单的方式解释了我想要的东西。我想这个 $.map 会像这样工作,但不幸的是我无法得到结果。

最简单、最优雅的方法是什么?我真的遍历所有数组只是为了查找键的值是否存在吗?

Jquery 有类似isset($array['key']) 的东西吗?

编辑

我尝试使用 inArray,但即使有匹配项,它也会不断将对象添加到数组中。

if ( $.inArray(productID, arr) > -1) 
   var number = $.inArray(productID, arr);
   orderInfo[number].price = parseFloat(productPrice);
else 
   orderInfo.push(id:productID, price:parseFloat(productPrice));

【问题讨论】:

$.inArray() 在大多数情况下都不起作用。最好使用jQuery.inArray() 【参考方案1】:

http://api.jquery.com/jQuery.inArray/

if ($.inArray('example', myArray) != -1)

  // found it

【讨论】:

太糟糕的社区投票不能在五年后导致被标记为正确答案。 :) 他们应该通过在 x 时间后查看赞成票来自己标记正确答案 其实$.inArray执行的是===而不是==。所以如果你这样做$.inArray( "4", [1,2,3,4]) 你会得到-1【参考方案2】:

jQuery 有inArray 函数:

http://api.jquery.com/jQuery.inArray/

【讨论】:

我尝试使用 inArray 但似乎我在某些时候做错了。它不断添加数据。 @Revenant,Here 就是一个例子。【参考方案3】:
    if ($.inArray('yourElement', yourArray) > -1)
    
        //yourElement in yourArray
        //code here

    

参考:Jquery Array

$.inArray() 方法类似于 javascript 的原生 .indexOf() 方法,因为它在找不到匹配项时返回 -1。如果数组中的第一个元素与值匹配,则 $.inArray() 返回 0。

【讨论】:

这就是我要找的,非常感谢酷酷的解决方案【参考方案4】:

试试jQuery.inArray()

这是使用相同代码的jsfiddle link:http://jsfiddle.net/yrshaikh/SUKn2/

$.inArray() 方法类似于 JavaScript 的原生 .indexOf() 方法,因为它在找不到匹配项时返回 -1。如果数组中的第一个元素与值匹配,则 $.inArray() 返回 0

示例代码

<html>
   <head>
      <style>
         div  color:blue; 
         span  color:red; 
  </style>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
   </head>
   <body>    
      <div>"John" found at <span></span></div>
      <div>4 found at <span></span></div>
      <div>"Karl" not found, so <span></span></div>
      <div>
         "Pete" is in the array, but not at or after index 2, so <span></span>
      </div>
      <script>
         var arr = [ 4, "Pete", 8, "John" ];
         var $spans = $("span");
         $spans.eq(0).text(jQuery.inArray("John", arr));
         $spans.eq(1).text(jQuery.inArray(4, arr));
         $spans.eq(2).text(jQuery.inArray("Karl", arr));
         $spans.eq(3).text(jQuery.inArray("Pete", arr, 2));
      </script>  
   </body>
</html>

输出:

“约翰”发现于 3 4 发现于 0 没有找到“Karl”,所以 -1 “Pete”在数组中,但不在索引 2 处或之后,所以 -1

【讨论】:

这个答案应该是被接受的。对于现在的未来,使用jQuery.inArray() 而不是$.inArray()【参考方案5】:

如果您想使用.map() 进行操作,或者只是想知道它是如何工作的,您可以这样做:

var added=false;
$.map(arr, function(elementOfArray, indexInArray) 
 if (elementOfArray.id == productID) 
   elementOfArray.price = productPrice;
   added = true;
 

if (!added) 
  arr.push(id: productID, price: productPrice)

该函数分别处理每个元素。其他答案中提出的.inArray() 可能是更有效的方法。

【讨论】:

只有 1 个额外信息; added = true 必须在条件内。

以上是关于Jquery,检查数组中是不是存在值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JQuery / Javascript:检查var是不是存在[重复]

检查Bash数组中是不是存在元素[重复]

通过jQuery中的类检查DIV元素是不是存在[重复]

需要更改此 JQuery 代码以在处理之前检查元素是不是存在 [重复]

检查数组中是不是存在迭代器时,array.includes 不起作用[重复]

Python检查字典中是不是存在值[重复]