javascript - 如何从localStorage中清除相同的对象并增加数量?

标签 javascript

我正在创建一个客户端购物车。添加的产品保存在本地存储中,但是如果已经添加到本地存储中,如何增加产品数量呢?我有将产品添加到本地商店的功能,在这个功能中我增加了数量,但产品变得重复。

Product.prototype.addObjToLocalStore = function() {
    var obj = {
        'name': this.name,
        'qty': this.qty,
        'price': this.price,
        'total': this.getPrice()
    }
    var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

    for (k in oldItems) {
        if(oldItems[k].name == obj.name) {
            oldItems[k].qty += parseInt(obj.qty);
            localStorage.setItem('itemsArray', JSON.stringify(oldItems[k].qty));
        }
    }

    oldItems.push(obj);
    localStorage.setItem('itemsArray', JSON.stringify(oldItems));
}

最佳答案

好吧,无论您是否找到该项目,您都可以 oldItems.push(obj) 到它,从而复制该项目。

所以在这种情况下我要做的不是使用数组,而是使用对象。对象的键是项目的标识符(在您的例子中是名称),值是项目的属性(数量、价格等)。就像这样:

Product.prototype.addObjToLocalStore = function() {
    // oldItems is an object, not an array
    var oldItems = JSON.parse(localStorage.getItem('itemsObject')) || {};
    // If it exists, grab its quantity. If not, 0.
    var oldQuantity = (oldItems[this.name] && oldItems[this.name].qty) || 0;
    var obj = {
        'name': this.name,
        'qty': oldQuantity + this.qty,
        'price': this.price,
        'total': this.getPrice()
    }

    // Replace the old entry with the new.
    // If doesn't exist, will be created.
    oldItems[this.name] = obj;

    // We're done here. Store the new object.
    logalStorage.setItem('itemsObject', JSON.stringify(oldItems));
};

关于javascript - 如何从localStorage中清除相同的对象并增加数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630617/

相关文章:

javascript - 显示更多/显示更少 JavaScript 无法正常工作

javascript - 一次设置多个选项 javascript (MooTools) 对象

javascript - 在数组 javascript 中的特定字符串后插入分页符

javascript - jQuery Reel 插件动态加载卷轴图像

javascript - knockout 复选框 - 仅将选中的值推送到数组中

javascript - 使用 JavaScript 替换 txt 文件中的一行

javascript - 如何显示带有城市名称的标记 - Google Geochart

javascript - forEach中调用类函数 : how Javascript handles "this" keyword

javascript - jQuery ajax 调用变量

javascript - 使用 for/in 循环的 javascript 过滤器?