vue 商品满件折扣计算价格

商品多买多折价格计算
例如:
    2件9.5折
    3件9.0折
    5件8.0折
    
    买1件不打折;
    买4件按3件折扣计算。

购买件数和折扣力度是管理平台设置。

这种商品打折怎么计算?

阅读 4.5k
3 个回答
    let new_arr = [ 
        {
            "quantity": 3,
            "discount": 0.99
        }, {
            "quantity": 4,
            "discount": 0.95
        }, {
            "quantity": 6,
            "discount": 0.90
        }, {
            "quantity": 10,
            "discount": 0.88
        }
    ]
    /**
    * @method
    * @author  zhou
    * @param {array} arr 需要查找的数组
    * @param {number} num 目标数值,查找的是与这个数值最接近的
    * @return {object} 获取数组中<=目标数值的元素
    * @desc 获取数组中<=目标数值的元素
    */
    function findCloseNum(arr, num) {
        // 过滤出小于等于目标值的元素
        let new_arr = arr.filter(item => {
            return item.quantity <= num;
        });
        // 获取到new_arr中最大值
        let maxItem = Math.max.apply(Math, new_arr.map(item => { return item.quantity }));
        // 找到符合条件项
        let checkedItem =  arr.find(item => item.quantity == maxItem);
        // 返回结果
        return checkedItem || {};
    }
    /**
     折扣规则获取到了,根据取到折扣取计算价格就好计算了
    */
    console.log(1, findCloseNum(new_arr, 1));
    console.log(2, findCloseNum(new_arr, 2));
    console.log(3, findCloseNum(new_arr, 3));
    console.log(4, findCloseNum(new_arr, 4));
    console.log(5, findCloseNum(new_arr, 5));
    console.log(6, findCloseNum(new_arr, 6));
    console.log(7, findCloseNum(new_arr, 7));
    console.log(8, findCloseNum(new_arr, 8));
    console.log(9, findCloseNum(new_arr, 9));
    console.log(10, findCloseNum(new_arr, 10));
    console.log(100, findCloseNum(new_arr, 100));
    
    
    
结果
image

按你说的计算呀,这也不难吧。。。而且你这也没个代码

其实,枚举一下也无妨
let discount={

'1':1,
'2':0.95,
'3':0.9,
'4':0.9,
'5':0.8,
...

}

只需注意跟上缺损值就行,比如:不在枚举范围的都统一打多少折

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题