关于javascript:jquery,检查数组中是否存在值

Jquery, checking if a value exists in array or not

本问题已经有最佳答案,请猛点这里访问。

我相信这个问题对于那些使用JavaScript /jQuery的人来说是相当容易的。

1
2
3
4
5
6
7
8
9
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,但它会不断向数组添加对象,即使有匹配的对象。

1
2
3
4
5
6
if ( $.inArray(productID, arr) > -1) {
   var number = $.inArray(productID, arr);
   orderInfo[number].price = parseFloat(productPrice);
}else {
   orderInfo.push({id:productID, price:parseFloat(productPrice)});
}

http:/ / / / api.jquery.com jquery.inarray </P >

1
2
3
4
if ($.inArray('example', myArray) != -1)
{
  // found it
}


如果你想用它做.map()或只是想知道它如何工作你可以做这样的: </P >

1
2
3
4
5
6
7
8
9
10
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})
}

在每个函数的handles separately元。在.inArray()提出的在对方的回答是"probably更高效的方式来做。 </P >


jQuery有《inArray函数: </P >

http:/ / / / api.jquery.com jquery.inarray </P >


1
2
3
4
5
6
    if ($.inArray('yourElement', yourArray) > -1)
    {
        //yourElement in yourArray
        //code here

    }

参考:jQuery的阵列 </P >

对美元的.inarray()方法是相似的JavaScript的本地人.indexof()方法,它在时返回-1时,它不' t find a match。如果第一个元素在数组的值的比赛,.inarray(美元)时返回0。 </P >


试着jQuery.inArray() </P >

这里是一个链接jsfiddle使用同样的代码:http:/ / / / jsfiddle.net yrshaikh sukn2 / </P >

对美元的.inarray()方法是相似的JavaScript的本地人.indexof()方法,它在时返回-1时,它不' t find a match。如果第一个元素在数组的值的比赛,.inarray(美元)时返回0 </P >

实例代码: </P >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<html>
   <head>
      <style>
         div { color:blue; }
         span { color:red; }
  </style>
      <script src="http://code.jquery.com/jquery-latest.js">
   </head>
   <body>    
     "John" found at <span></span>
      4 found at <span></span>
     "Karl" not found, so <span></span>
     
        "Pete" is in the array, but not at or after index 2, so <span></span>
     
     
         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));
       
   </body>
</html>

输出: </P >

1
2
3
4
"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