一款应用程序可以让用户从菜单中点菜。菜单有三种类型的选择:主菜、饮料和甜点。需要添加一个功能,这将为每个main+drink组合的价格折扣10% (每组合10%)。客户订购的所有商品都存储在一个数组中,如下所示:
order = [
{id: 4, count: 1, type: "main", price: 10}
{id: 5, count: 2, type: "drink", price: 9.5}
]
如您所见,客户订购的每个商品都有一个count属性。如何在不改变订单数组或任何对象属性的情况下应用折扣?理想情况下,我希望遍历数组,确定组合的总数(在上面的示例中是1),确定总折扣值,并将该值传递给另一个计算订单总数的函数。如果有人能建议一个更好的方法,我会洗耳恭听(在这种情况下是眼睛)。
另外,从技术角度来说,表达这个问题的最佳方式是什么?
发布于 2021-05-02 20:09:08
const userOrder = [
{ id: 4, count: 1, type: "main", price: 200 },
{ id: 5, count: 1, type: "drink", price: 100 }
];
const orderInfo = userOrder.reduce((acc, cur) => {
console.log('cur', cur)
if (acc[cur.type]) {
return {
...acc,
[cur.type]: cur.count,
totalAmount: (cur.count * acc.totalAmount)
}
} else {
return {
...acc,
[cur.type]: cur.count,
totalAmount: (cur.count * cur.price ) + acc.totalAmount
}
}
}, {
main: 0,
drink: 0,
totalAmount: 0
});
const noOfComobosPresent = Math.min(orderInfo.main, orderInfo.drink);
const totalDiscountValue = noOfComobosPresent * 10;
const finalAmount = orderInfo.totalAmount - ((orderInfo.totalAmount * totalDiscountValue ) / 100) ;
console.log('finalAmount', finalAmount)
https://stackoverflow.com/questions/67355006
复制相似问题