2 回答
TA贡献1799条经验 获得超9个赞
我认为你想得太多了,你也在用filter你的意思find,slice当你的意思splice。不过不用担心。我想你想要这样的东西:
let cart = {
products: [
{ prodId: 1, quantity: 1, price: 6.99 },
{ prodId: 2, quantity: 2, price: 4.99 },
{ prodId: 3, quantity: 1, price: 15.99 },
],
subTotal: 32.96,
};
let productId = 3;
cart.products.map(p => {
if (p.prodId === productId) {
p.quantity++;
cart.subTotal += p.price;
}
});
console.log(cart)
基本上,如果我理解的话,您只想增加具有给定 ID 的产品的数量。
我对其进行了进一步编辑并扩展了该功能,以将产品的价格也添加到小计中。没那么简单,但也许你需要/想要什么?
TA贡献1865条经验 获得超7个赞
在你的情况下,
oldProduct.map(p => p.quantity++);
返回一个包含新数量的数组,然后将其推入products
数组。
您想要获取具有更新数量的对象并将其推送。
还,
而不是使用
.filter
then.indexOf
,你可以使用.findIndex
let products = [
{ prodId: 1, quantity: 1, price: 6.99 },
{ prodId: 2, quantity: 2, price: 4.99 },
{ prodId: 3, quantity: 1, price: 15.99 }
];
let productId = 3;
let index = products.findIndex(p => p.prodId === productId); // findIndex
if (index > -1) {
let oldProduct = products[index]
products.splice(index, 1); // .splice
oldProduct.quantity++;
products.push(oldProduct); // push the object
}
console.log(products);
添加回答
举报