【问题标题】:Check quantity of item and append correct price either Sales price or Regular price based on sales variable检查项目数量并根据销售变量附加正确的价格或销售价格或正常价格
【发布时间】:2021-06-13 16:43:38
【问题描述】:

任务是构建一个准确的价格计算器,根据数量计算销售价格。我已经使用compiledCart.reduce() 方法构建了一个总价计算器(如下),但是我不知道如何添加销售功能。

如果用户购买 1 个糖果,价格为 3.97 美元,如果用户购买 2 个,价格为 5.00 美元。 如果用户购买了 3 个,那么前两个是 5.00 美元,第三个是 3.97 美元。如果用户购买 5 个也是一样。前 4 个是 10 美元,第 5 个是 3.97 美元

我的compiledCart 变量如下所示:

    [ 
     0: {item: "candy", quantity: 3, price: 3.97, salesPrice: 5.00}, 
     1: {item: "bread", quantity: 1, price: 2.17} 
    ]

这就是我正在做的事情:

    const gross = compiledCart.reduce( ( sum, { price, quantity } ) => sum + (price * quantity) , 0)

但我终其一生都无法弄清楚如何将销售价格变量考虑在内。

我尝试像这样使用模数 % 运算符:

    quantity % 2

但这只会根据是否有提醒返回 1 或 0。所以购物车中的 2 颗糖果将返回 0,而 1 颗糖果将返回 1,因为 1 / 2 = 1。但我不确定如何将其用于我的事业?

【问题讨论】:

  • 给定 compileCart 的预期总价值是多少?
  • 模数运算符是一个好的开始。看起来如果 mod 为 0,你有 numCandies * 2.5,否则你有 (numCandies -1)*2.50 + 3.97。
  • @azad 现在存在的已编译购物车的总额应该是 11.14 美元。 (2 个糖果 @ 5 美元,1 个糖果 @ 3.97 和 1 个面包 @ 2.17)。
  • @jeremykahan 我很困惑你从哪里得到 2.50。
  • @n-dev-101我修改了我的答案,请检查一下

标签: javascript frontend logic javascript-objects modulo


【解决方案1】:

试试这个

const gross = cart.reduce((sum, {price, quantity, salesPrice = 0}) => {
    let total = 0;
    if (quantity >= 2) {
        const saleQuantity = 2 * Math.floor(quantity / 2);
        console.log({saleQuantity, remainderQuantity: quantity - saleQuantity});
        total = ((saleQuantity / 2) * salesPrice) + (price * (quantity - saleQuantity));
    } else {
        total = (price * quantity);
    }
    return sum + total;
}, 0);

【讨论】:

    【解决方案2】:

    如果数量大于2则:

    将数量除以 2 并乘以 salesPrice

    var compiledCart = [ 
         {item: "candy", quantity: 3, price: 3.97, salesPrice: 5.00}, 
         {item: "bread", quantity: 1, price: 2.17} 
        ];
    
    var sum = compiledCart.reduce((sum, { quantity, price, salesPrice = 0 }) => {
    
            let tot = 0;
            if (quantity > 1)
                tot = Math.trunc(quantity / 2) * (salesPrice || price);
            
            if (quantity % 2 == 1)
              tot += price;
    
            return sum + tot;
        }, 0);
    
    console.log(sum);

    【讨论】:

    • 这不起作用。因为如果您将糖果数量更改为 4,则总计应为 12.17 美元(每两个 5 美元的 4 个糖果 = 10 美元 + 1 个 2.17 美元的面包 = 12.17 美元)。有什么想法吗?
    • @n-dev-101 我更新了答案请检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多