javascript-es6-集合的运算
const setA=new Set()
setA.add(1)
setA.add(2)
setA.add(3)
const setB=new Set()
setB.add(5)
setB.add(6)
setB.add(9)
const union=(setA,setB)=>{
//并集运算
const unionAb=new Set()
setA.forEach(value=>unionAb.add(value))
setB.forEach(value=>unionAb.add(value))
return unionAb;
}
console.log(union(setA,setB))
console.log(setA.size)
const intersection=(setA,setB)=>{
//交集运算
const intersectionSet=new Set()
if(setA.size>setB.size){
setA.forEach(value=>{
if(setB.has(value)){
intersectionSet.add(value)
}
})
}
setB.forEach(value=>{
if(setA.has(value)){
intersectionSet.add(value)
}
})
return intersectionSet;
}
console.log(intersection(setA,setB))
const difference=(setA,setB=>{
//差集运算
const differenceSet=new Set()
setA.forEach(value=>{
if(!setB.has(value)){
differenceSet.add(value)
}
})
return differenceSet;
})
console.log(difference(setA,setB))
//通过扩展运算符,将集合转换为数组,进行并集,差集,交集的运算
console.log(new Set([...setA,...setB]))
//并集
console.log(new Set([...setA].filter(x=>setB.has(x))))
//交集
console.log(new Set([...setA].filter(x=>!setB.has(x))))
//差集