我有一个对象数组,其中包含产品,我从产品对象中随机选择项目并添加到购物车,然后将其存储到本地存储中。这里,每当我试图添加已经存在于其创建重复对象中的产品时,我只想增加并更新产品的数量属性。
这是我的代码,我正在努力实现。
var cart = [];
var products = [
{
id: 1,
productDescription: "Iphone 14 pro",
price: 1544,
quantity: 1
},
{
id: 2,
productDescription: "OPPOF19",
price: 788,
quantity: 1
},
{
id: 3,
productDescription: "Microsoft Surface Laptop 4",
price: 2500,
quantity: 1
},
{
id: 4,
productDescription: "Fog Scent Xpressio Perfume",
price: 15,
quantity: 1
},
{
id: 5,
productDescription: "Hyaluronic Acid Serum",
price: 19,
quantity: 1
}
];
var item = products[Math.floor(Math.random() * products.length)];
if (localStorage.getItem('ItemsInCart')) {
var previousCartItems = localStorage.getItem("ItemsInCart");
cart = JSON.parse(previousCartItems);
let obj = cart.some((o, i) => {
if (o.id == item.id) {
cart[i].quantity = cart[i].quantity + 1;
localStorage.setItem("ItemsInCart", (JSON.stringify(cart)));
return true;
} else {
item.quantity = 1;
cart.push(item);
localStorage.setItem("ItemsInCart", (JSON.stringify(cart)));
return true;
}
});
} else {
item.quantity = 1;
cart.push(item);
localStorage.setItem("ItemsInCart", (JSON.stringify(cart)));
}
console.log('*******************')
console.log(cart)
console.log('*******************')
4条答案
按热度按时间j91ykkif1#
some
不是最适合这里。find
更适合这个。你找到,如果找到增量else添加到购物车jsfiddle
pxyaymoc2#
我不会使用'some'来表示这种行为。也许你会喜欢使用像'map'这样的函数。这是我能想到的最简单的方法:
9w11ddsr3#
嘿,如果你仍然想使用一些数组方法来实现上面的功能,你可以通过下面的方法来实现,尽管map和find方法是最合适的解决方案
jsfiddle
up9lanfz4#
你把事情弄得太复杂了。