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)});
}
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.
http://api.jquery.com/jQuery.inArray /
if ($.inArray('example', myArray) != -1)
{
// found it
}
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.
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