首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将组合折扣应用于食品订单

将组合折扣应用于食品订单
EN

Stack Overflow用户
提问于 2021-05-02 17:55:31
回答 1查看 44关注 0票数 0

一款应用程序可以让用户从菜单中点菜。菜单有三种类型的选择:主菜、饮料和甜点。需要添加一个功能,这将为每个main+drink组合的价格折扣10% (每组合10%)。客户订购的所有商品都存储在一个数组中,如下所示:

代码语言:javascript
运行
复制
order = [
{id: 4, count: 1, type: "main", price: 10}
{id: 5, count: 2, type: "drink", price: 9.5}
]

如您所见,客户订购的每个商品都有一个count属性。如何在不改变订单数组或任何对象属性的情况下应用折扣?理想情况下,我希望遍历数组,确定组合的总数(在上面的示例中是1),确定总折扣值,并将该值传递给另一个计算订单总数的函数。如果有人能建议一个更好的方法,我会洗耳恭听(在这种情况下是眼睛)。

另外,从技术角度来说,表达这个问题的最佳方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-05-02 20:09:08

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67355006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档