javascript - 如何在本地存储中更新我的数组中的数量
问题描述
我正在创建一个购物车,如果我添加到购物车,数量应该添加到之前的数量。在我的情况下,它只设置一个数量而不是添加。
这是我尝试过的代码:
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);
}
解决方案
只需要对添加逻辑稍作修改。
在推送它之前,您需要检查它是否已经存在于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);
}
推荐阅读
- excel - 使用文本框(VBA)的连续数字
- c# - 状态码 413 (RequestEntityTooLarge) / 状态码 415 (UnsupportedMediaType)。WCF 以编程方式
- javascript - 如何处理本地视频文件 Reactjs
- visual-studio-code - WebStorm 格式设置 - 移植到另一个编辑器
- c++ - 如何从数据结构向量中收集迭代器
- mysql - mysql尝试从某些CHAR_LENGTH的值中选择并按DESC排序的问题
- python - Python click 模块不适用于连字符参数
- c# - 无法检查用户是否已存在于我的数据库中
- reactjs - 当服务器上的事件发生时如何更新 ReactJs 中的 prop 状态
- pentaho - Pentaho中缺失值的插值