JavaScript 组合优惠处理问题?

obj是优惠条件 list为购物车 如果购物车商品符合优惠条件 则购物车金额替换成优惠金额list b = obj b
obj a为商品序号 obj a为优惠商品序号 obj c为达到优惠条件的数量(整个数组为同一数值)
符合条件的话优惠可以多次触发

var list = [{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:02,b:2},{a:02,b:2},{a:03,b:7},{a:08,b:5}]
var obj = [{a:01,b:1,c:2},{a:02,b:1.5,c:2},{a:03,b:1,c:1}]

得 list符合obj条件 01商品有三件 符合obj数量要求的两件 两件优惠价 一件原价 02两件也符合 03一件符合

list = [{a:01,b:1},{a:01,b:1},{a:01,b:2},{a:02,b:1.5},{a:02,b:1.5},{a:03,b:1},{a:08,b:5}]

var list = [{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:02,b:2},{a:03,b:7},{a:08,b:5}]
var obj = [{a:01,b:1,c:2},{a:02,b:1.5,c:2},{a:03,b:1,c:1}]

得 obj 要求 02两件才优惠 list为1件 不满足02条件 维持原价 不执行任何优惠 obj全部满足才能执行优惠

list = [{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:02,b:2},{a:03,b:7},{a:08,b:5}]

var list = [{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:01,b:2},{a:02,b:2},{a:02,b:2},{a:03,b:7},{a:08,b:5}]
var obj = [{a:01,b:1,c:2},{a:02,b:1.5,c:1}]

得 obj 要求 触发优惠需要01两件 02一件 list满足要求 并满足两次 所以前4个01为优惠价 前两个02为优惠价 其余不变维持原价

var list = [{a:01,b:1},{a:01,b:1},{a:01,b:1},{a:01,b:1},{a:01,b:2},{a:02,b:1.5},{a:02,b:1.5},{a:03,b:7},{a:08,b:5}]

组合商品优惠判断 我写了3层foreach 最后多种情况测试的时候还是有问题
希望对js比较深入的能帮忙看下

阅读 1.1k
1 个回答
let objs = {}
if(obj.every(item => {
    let arr = list.filter(citem => citem.a === item.a)
    objs[item.a] = arr
    return arr.length >= item.c
})){
    obj.forEach(item => {
        let res = objs[item.a] || []
        let length = res.length
        if(length >= item.c){
            res = res.slice(0, length - length % item.c)
        }
        res.forEach(citem => citem.b = item.b)
    })
}

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