数组交集
要求:
给定两个数组,要求求出两个数组的交集,注意,交集中的元素应该是唯一的。
求出两个数组的交集,例如arr1 = [2,4,0,1] arr2 = [2,2,1,3]
最终求出的交集为arr3 = [1,2]
思路:
利用hashmap的特性,首先利用第一个数组通过foreach循环遍历创建一个hashmap,
这个hashmap的键就是这个数组的元素,值我们规定为1。然后再循环遍历第二个数组,
看一看第二个数组中的元素在hashmap中的值是否为1,如果为1,就将其添加到新数组。
const arr1 = [2,4,0,1];
const arr2 = [2,2,1,3];
let arr3 = []; //用来接收交集
let hashmap = {
}; //定义一个hashmap对象
//将arr1数组中的每个元素作为hashmap的键,规定hashmap的值为1,
arr1.forEach(function(element){
hashmap[element] = 1;
})
console.log(hashmap); //{0:1,1:1,2:1,4:1}
arr2.forEach(function(element){
if(hashmap[element] === 1){
arr3.push(element);
hashmap[element]++; //设置计数器跟踪我们已添加的内容
/*
举个例子,这里可能不是很好理解
例如遍历arr2的时候,第一个数为2,有hashmap可知,键为2的值是1,所以我们就可以把2加入arr3,他是一个交集
但是下一个数字还是2,如果没有hashmap[element]++; 这句话,那么这个2毫无疑问也会添加到arr3
所以有了它hashmap[element]++;使得键为2的值是2,所以第二个数字2的值也为2,所以就不等于1,所以就不添加至arr3
*/
}
})
console.log(arr3); //[2,1]
参考至https://mp.weixin.qq.com/s/cS7yiYr0tqKjToK-msyLOQ