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比较深入的能帮忙看下


回答:

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)

以上是 JavaScript 组合优惠处理问题? 的全部内容, 来源链接: utcz.com/p/933199.html

回到顶部