【问题标题】:How to update the quantity in my array in the local storage如何在本地存储中更新我的数组中的数量
【发布时间】:2020-07-31 20:24:56
【问题描述】:

我正在创建一个购物车,如果我添加到购物车,数量应该添加到之前的数量。在我的情况下,它只设置为一个数量而不是添加。

这是我尝试过的代码:

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

【问题讨论】:

  • 尝试打印item.namename
  • 如果没有项目,那么for (var item of items) 将不会迭代任何内容。将console.log() 语句作为for 循环的第一行并查看它是否打印。更好的是,使用浏览器的断点和调试功能。
  • 哦,它给了我一个错误。它无法读取属性“名称”.. 哎呀

标签: javascript arrays json local-storage push


【解决方案1】:

只需对添加逻辑稍作修改。

你需要在推送之前检查它是否已经存在于itemsInCart数组中。

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

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    相关资源
    最近更新 更多