Jquery, vérifier si une valeur existe dans le tableau ou non [dupliquer]

cette question a déjà une réponse ici:

  • Comment vérifier si un tableau inclut un objet en JavaScript? 41 réponses

je crois que cette question sera assez facile pour ceux qui ont joué avec Java script / jquery.

var arr = new Array();

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

I deviner le code ci-dessus explique ce que je veux de manière très simple. J'imagine que c'est $.map fonctionnerait comme ça mais malheureusement je n'ai pas pu obtenir de résultats avec ça.

Quelle est la manière la plus simple et élégante de le faire? Est-ce que je passe vraiment par tout le tableau juste pour trouver si la valeur d'une clé est là ou pas?

est-ce que Jquery a quelque chose comme isset($array['key']) ?

MODIFIER

j'ai essayé d'utiliser inArray mais il continue à ajouter objet à Tableau même s'il y a une correspondance.

if ( $.inArray(productID, arr) > -1) {
   var number = $.inArray(productID, arr);
   orderInfo[number].price = parseFloat(productPrice);
}else {
   orderInfo.push({id:productID, price:parseFloat(productPrice)});
}
50
demandé sur Michał Perłakowski 2011-10-24 23:36:46

5 réponses

Si vous voulez le faire à l'aide de .map() ou veux juste savoir comment il fonctionne, vous pouvez le faire comme ceci:

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})
}

la fonction traite chaque élément séparément. Le .inArray() proposé dans d'autres réponses est probablement le moyen le plus efficace de le faire.

18
répondu Lycha 2011-10-24 21:10:06

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

if ($.inArray('example', myArray) != -1)
{
  // found it
}
212
répondu jbabey 2015-10-21 07:07:50

jQuery a la fonction inArray :

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

18
répondu BZink 2015-03-04 12:11:19
    if ($.inArray('yourElement', yourArray) > -1)
    {
        //yourElement in yourArray
        //code here

    }

La Référence: Jquery Tableau

The $.la méthode inArray () est similaire à la méthode native de JavaScript .la méthode indexOf () en ce qu'elle retourne -1 quand elle ne trouve pas de correspondance. Si le premier élément du tableau correspond à la valeur,$.inArray () renvoie 0.

15
répondu Hueston Rido 2014-11-18 01:39:01

Try jQuery.inArray()

voici un jsfiddle link utilisant le même code: http://jsfiddle.net/yrshaikh/SUKn2 /

The $.la méthode inArray () est similaire à la méthode native de JavaScript .la méthode indexOf () en ce qu'elle retourne -1 quand elle ne trouve pas de correspondance. Si le premier élément du tableau correspond à la valeur,$.inarray () retourne 0

Exemple De Code :

<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>

sortie:

"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
7
répondu Yasser 2013-07-04 23:17:04