//map set () 设置相同的键值时候会把相同key值数量加到值上
// const arr1=[1,3,3,4,4]; // function setMap(arr){ // let map=new Map(); // arr.forEach((item,index)=>{ // map.set(item,index); // }); // return map; // } // console.log(setMap(arr1)); // [1=>0,3=>2,4=>4]
1.[2,2,1,4] [2,2,3,56] 交集[2,2] 2.[1,2,3,4] [2,3] 交集[2,3] 1.按数组中每个元素出现最少次数的相同元素组合 2.按两个数组中相同元素且在某个数组中出现的次数最少的元素推入到新数组中,这个新数组就是交集
算法: 1.先用map数据结构来记录每个元素在数组中出现的次数 function setMapCount(nums1){ let map=new Map(); for(let i=0;i<nums1.length;i++){ let count=map.get(nums[i]); if(map.get(nums1[i])){ map.set(nums1[i],count+1); }else{ map.set(nums1[i],1); }
}
}
console.log(setMapCount([2,2,3,4]));//[2=>2,3=>1,4=>1]
2.得到每个数组中的每个成员对应出现的个数,找出出现次数最少的共有成员推到新数组中
function getSameCount(arr1,arr2){
const setArr=[];
let map1=setMapCount(arr1);
let map2=setMapCount(arr2);
for(let i of map1.keys()){
const count1=map1.get(i);
const count2=map2.get(i);
if(count2){
let count=Math.min(count1,count2);
for(let j=0;j<count;j++){
setArr.push(i);
}
}
}
return setArr;
}
getSameCount([1,3,4,45,3],[3,4,55,56,4]);