2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為你想得太多了,你也在用filter你的意思find,slice當(dāng)你的意思splice。不過不用擔(dān)心。我想你想要這樣的東西:
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 的產(chǎn)品的數(shù)量。
我對(duì)其進(jìn)行了進(jìn)一步編輯并擴(kuò)展了該功能,以將產(chǎn)品的價(jià)格也添加到小計(jì)中。沒那么簡(jiǎn)單,但也許你需要/想要什么?

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
在你的情況下,
oldProduct.map(p => p.quantity++);
返回一個(gè)包含新數(shù)量的數(shù)組,然后將其推入products
數(shù)組。
您想要獲取具有更新數(shù)量的對(duì)象并將其推送。
還,
而不是使用
.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);
添加回答
舉報(bào)