How to update the quantity in my array in the local storage

Tags: , , , ,



I’m creating a shopping cart where in if I add to cart, the quantity should be added to the previous quantity. In my case it only sets to a quantity and is not adding.

Here is the code that I tried:

var addNewItem = function (name, quantity, price) {

   // retrieve it (Or create a blank array if there isn't any info saved yet),
   var items = JSON.parse(localStorage.getItem('itemsInCart')) || [];


  // add to it,
   items.push({name: name, quantity: quantity, price: price});

   //supposed to add to quantity
   for (var item of items){
      if(item.name === name){
        quantity += item.quantity ;
        console.log('true');     
      }
   }

   // then put it back.
   localStorage.setItem('itemsInCart', JSON.stringify(items));
   console.log(items);
}

Answer

Just needed a slight modification to the addition logic.

You need to check if it already exists in the itemsInCart array before pushing it.

var addNewItem = function(name, quantity, price) {

  // retrieve it (Or create a blank array if there isn't any info saved yet),
  var items = JSON.parse(localStorage.getItem('itemsInCart')) || [];


  // add to it, only if it's empty
  var item = items.find(item => item.name === name);

  if (item) {
    item.quantity += quantity;
  } else {
    items.push({
      name,
      quantity,
      price
    })
  }

  // then put it back.
  localStorage.setItem('itemsInCart', JSON.stringify(items));
  console.log(items);
}


Source: stackoverflow