2
votes

Comment compter le nombre total d'éléments dans un tableau en fonction de l'ID et de la quantité?

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


0 commentaires

3 Réponses :


1
votes

Vous devez utiliser this_item_qty + = parseInt (value.qty)


0 commentaires

1
votes

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.


1 commentaires

Merci pour le "correctif" et l'explication. Ça marche! :)



2
votes

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

});


0 commentaires