数组的交集,并集,差集的操作方法

数组的交集,合集,差集的操作方法

这星期开发项目中遇到一个项目开发的问题,假设我们有几种通道,每种通道对应几种行为方案,我们根据通道下面的行为去制定策略
业务场景 有多个通道的勾选框,然后根据已勾选的通道,动态筛选出对应的下拉框行为.从而一步一步的制定策略行为!
假设我们要制定一个策略行为,这个策略行为有五种通道供我们选择,分别为

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的合集数组
 
 
 

你可能感兴趣的:(javascript,前端)