Javascript 如何在本地存储中更新阵列中的数量
我正在创建一个购物车,如果我添加到购物车,数量应该添加到以前的数量。在我的情况下,它只设置为一个数量,而不是添加 以下是我尝试的代码:Javascript 如何在本地存储中更新阵列中的数量,javascript,arrays,json,local-storage,push,Javascript,Arrays,Json,Local Storage,Push,我正在创建一个购物车,如果我添加到购物车,数量应该添加到以前的数量。在我的情况下,它只设置为一个数量,而不是添加 以下是我尝试的代码: 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('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,
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);
}
尝试打印
item.name
和name
如果没有项目,那么for(项目的var项目)
将不会对任何内容进行迭代。将console.log()
语句作为for
循环的第一行,然后查看它是否打印出来。更好的是,使用浏览器的断点和调试功能。哦,这给了我一个错误。它无法读取属性“名称”。。呜呜声