代码之家  ›  专栏  ›  技术社区  ›  Aya Sato

如何从localStorage获取阵列中的项目名称以增加其数量

  •  0
  • Aya Sato  · 技术社区  · 6 年前

    我正在创建一个购物车,如果我添加到购物车,数量应该添加到以前的数量。在我的例子中,它只设置为一个数量,不增加。

    以下是我尝试过的代码:

    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);
    }
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   painotpi    6 年前

    只需要对加法逻辑稍加修改。

    你需要检查它是否已经存在于 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);
    }