// 求并集的数组对象
let arr = [
[
{value: 'a',label: 'a'},
{value: 'b',label: 'b'},
{value: 'c',label: 'c'},
],
[
{value: 'b',label: 'b'},
{value: 'c',label: 'c'},
],
[
{value: 'c',label: 'c'},
],
];
// 获取并集
function getIntersect(data){
// 如果传入的求并集数组的项少于2,则无需求并集,并集为空集
if(data.length < 2){
return []
}
let intersect = data[0];
// 将i和i+1的集合进行比较,得出并集后,将并集与下次循环的i+1再进行比较,以此类推
for(let i=0;i<data.length-1;i++){
intersect = intersect.filter(item => {
return data[i+1].some(item2 => item.value === item2.value);
})
}
return intersect;
}
getIntersect(arr);