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