J'ai un tableau cart [] comme celui-ci:
var this_item_qty = 0;
$.each(cart, function(index, value) {
if (value.item_id == "0001"){
this_item_qty = this_item_qty + value.qty;
}
console.log(this_item_qty);
// Returns 01 or 015...
});
J'essaie de compter toute la quantité où item_id == 0001 par exemple. Le problème est que l ' item_id peut être plusieurs fois dans le tableau; dans ce cas deux fois. J'essaie donc d'ajouter toute la quantité en une seule valeur.
Voici ce que j'ai jusqu'à présent:
[
{item_id: "0001", qty: "1"},
{item_id: "0002", qty: "2"},
{item_id: "0005", qty: "3"},
{item_id: "0001", qty: "5"}
]
Mais cela ne semble pas fonctionner. Cela me donne des valeurs telles que 01 et 015 . Cela semble mettre les valeurs les unes après les autres au lieu de les calculer ensemble. Qu'est-ce que je fais mal?
3 Réponses :
Vous devez utiliser this_item_qty + = parseInt (value.qty)
Il prend la value.qty comme une chaîne et la concatène. Vous avez besoin de:
this_item_qty = this_item_qty + parseInt(value.qty);
Cela convertira la chaîne en entier. Si vous voulez être vraiment robuste, vous pouvez vérifier la valeur analysée pour NaN avant de l'ajouter.
Merci pour le "correctif" et l'explication. Ça marche! :)
Utilisez Number(value.qty)
var this_item_qty = 0;
$.each(cart, function(index, value) {
if (value.item_id == "0001"){
this_item_qty = this_item_qty + Number(value.qty);
}
console.log(this_item_qty);
});