一、题目
给定多个/二维数组,编写一个函数来计算它们的交集。
二、示例
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2],nums3=[2]
输出:[2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4],nums3=[9,4]
输出:[9,4]
三、参数为多个数组的解法
方法:
遍历这个参数数组,将参数数组第一项去重后暂存结果数组中,然后根据剩余数组去重后的集合是否存在该数组的值,来对该数组进行筛选。
var interstion=function(arrs)
{
var res=[]
var arr=Array.from(arguments) //获取参数
arr.forEach((item)=>
{
if(!res.length) //没有长度就把第一项的去重结果加入
{
res.push(...new Set(item))
}
else{ //根据去重结果筛选剩余项数组值
let tempSet=new Set(item)
res= res.filter(items=>tempSet.has(items) )
}
})
return res
}
技巧:参数不确定时,利用arguments获取实参即可。
四、参数为一个二维数组
function intersection(arr) {
let result = [];
console.log(arr)
arr.forEach(arr => {
if( !result.length ) {
result.push(...new Set(arr));
return ;
}
// 如果是第二个及以后的数组,则先去重然后用目标数组过滤
else{
const tempSet = new Set(arr);
result = result.filter(item=>tempSet.has(item));
}
});
return result;
}