请参考以下完整攻略:
问题描述
如何用JavaScript实现两个数组的交集?
解决方案
下面提供几种常见的解决方法。
方法一:双重循环法
最基本的方法就是使用双重循环,比较两个数组中的每个元素,找出相同的元素。这种方法优点在于思路简单,容易理解,缺点在于时间复杂度较高,当数组规模较大时性能很差。
const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const result = [];
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2.length; j++) {
if (arr1[i] === arr2[j]) {
result.push(arr1[i]);
}
}
}
console.log(result); // []
方法二:利用ES6的Set数据结构
使用ES6的Set数据结构可以轻松解决数组交集问题,只需将其中一个数组转为Set对象,然后使用Set对象自带的交集运算符“&”,得到两个数组的交集。这种方法简单、性能优秀。
const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const set1 = new Set(arr1);
const set2 = new Set(arr2);
const result = [...set1].filter(item => set2.has(item));
console.log(result); // []
方法三:利用for循环和includes方法
使用for循环遍历数组,并利用数组自带的includes方法判断当前元素是否在另一个数组中出现过。相对于双重循环法,这种方法的时间复杂度要低,但是相对于利用Set交集方法,依然较低。
const arr1 = [1, 3, 5, 7, 9];
const arr2 = [2, 4, 6, 8, 10];
const result = [];
for (let i = 0; i < arr1.length; i++) {
if (arr2.includes(arr1[i])) {
result.push(arr1[i]);
}
}
console.log(result); // []
示例说明
下面演示一个实际应用场景中使用交集方法的例子:
假如我有两个数组,分别代表两个部门的员工名单,我想知道两个部门的共同员工有哪些。
const department1 = ['小明', '小红', '小美', '小张'];
const department2 = ['小黄', '小绿', '小美', '小张'];
const set1 = new Set(department1);
const set2 = new Set(department2);
const result = [...set1].filter(item => set2.has(item));
console.log(result); // ['小美', '小张']
从运行结果可以看出,两个部门的共同员工为小美和小张。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现两个数组的交集 - Python技术站