Jquery,检查数组中是否存在值

Rev*_*ant 59 javascript arrays jquery loops

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

var arr = new Array();

$.map(arr, function() {
 if (this.id == productID) {
   this.price = productPrice;
 }else {
  arr.push({id: productID, price: productPrice})
 }
}
Run Code Online (Sandbox Code Playgroud)

我猜上面的代码以非常简单的方式解释了我想要的东西.我想这个$ .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)});
}
Run Code Online (Sandbox Code Playgroud)

jba*_*bey 213

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

if ($.inArray('example', myArray) != -1)
{
  // found it
}
Run Code Online (Sandbox Code Playgroud)

  • 太糟糕的社区上升投票不可能在五年后导致某些事情被标记为正确的答案.:) (3认同)
  • 实际上 `$.inArray` 执行的是 === 而不是 ==。所以如果你做 `$.inArray("4", [1,2,3,4])` 你会得到 -1 (3认同)

Lyc*_*cha 23

如果你想使用它.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})
}
Run Code Online (Sandbox Code Playgroud)

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


BZi*_*ink 19

jQuery具有以下inArray功能:

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

  • 我尝试使用 inArray 但似乎我在某些时候做错了。它不断添加数据。 (2认同)

Hue*_*ido 15

    if ($.inArray('yourElement', yourArray) > -1)
    {
        //yourElement in yourArray
        //code here

    }
Run Code Online (Sandbox Code Playgroud)

参考:Jquery数组

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


Yas*_*ser 7

尝试 jQuery.inArray()

这是一个使用相同代码的jsfiddle链接:http://jsfiddle.net/yrshaikh/SUKn2/

$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1.如果数组中的第一个元素与value匹配,则$ .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>
Run Code Online (Sandbox Code Playgroud)

输出:

"John" found at 3
4 found at 0
"Karl" not found, so -1
"Pete" is in the array, but not at or after index 2, so -1