这星期开发项目中遇到一个项目开发的问题,假设我们有几种通道,每种通道对应几种行为方案,我们根据通道下面的行为去制定策略
业务场景 有多个通道的勾选框,然后根据已勾选的通道,动态筛选出对应的下拉框行为.从而一步一步的制定策略行为!
假设我们要制定一个策略行为,这个策略行为有五种通道供我们选择,分别为
let arr={
a:[1,2,3], //通道a,以及a所携带的行为
b:[2,3,4], //通道b,以及b所携带的行为
c:[3,4,5], //通道c,以及c所携带的行为
d:[1,3,4,5], //通道d,以及d所携带的行为
e:[2,3,4,5,6], //通道 e,以及 e所携带的行为
}
策略第一步勾选了 a,b ,d通道,那么我们就要选择a,b,d,都存在的一种行为才能,完成策略的第一步
在这里我们获得了后端返回的数据,为了以防行为下拉框重复我们可以使用new Set()去重!
a:[1,2,3]
b:[2,3,4]
d:[1,3,4,5]
因为我们要取到对应的交集,操作如下
let a1 = new Set(new Set([...a].filter(v => b.has(v))))
console.log([...a1]) //[2,3]
let d1 = new Set(new Set([...a1].filter(v => d.has(v))))
console.log([...d1] //[3]
策略的第一步就完成了,后续再勾选剩余的c,d完成策略的第二步也是如此
c:[3,4,5]
e:[2,3,4,5,6]
let c1 = new Set(new Set([...c].filter(v => e.has(v))))
console.log([...c1]) //[3,4,5]
这都是取交集,而差集是
let a2 = new Set(new Set([...a].filter(v => !b.has(v))))
console.log([...a2]) //[1] a的差集
取合集
let a3 = new Set([...a, ...b])
console.log([...a3]) //[1,2,3,4] a,b的合集数组