You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用reduce方法计算多个数组的交集?

找出多个数组的共同元素

嘿,这事儿好办!针对你给出的示例,我给你两种实用的解法,都能轻松得到[3,4]这个结果:

方法一:用filter + every(直观易懂)

思路很简单:以第一个数组为基准,筛选出那些在所有其他数组里都存在的元素。

代码实现:

const myArray = [[1,2,3,4], [2,3,4,5], [3,4,5,6] ];
// 取第一个数组作为基准
const baseArr = myArray[0];
// 过滤出在所有子数组中都存在的元素
const newArray = baseArr.filter(item => {
  return myArray.every(subArr => subArr.includes(item));
});
console.log(newArray); // 输出: [3,4]

这里filter负责遍历基准数组的每个元素,every则检查这个元素是否在每一个子数组里都存在,两个方法配合就搞定了。

方法二:用Set优化查找效率(适合大数据量)

如果你的数组元素很多,用includes会有点慢(因为数组查找是O(n)复杂度),这时候可以把每个子数组转成Set,利用Set.has()的O(1)快速查找特性来优化性能:

代码实现:

const myArray = [[1,2,3,4], [2,3,4,5], [3,4,5,6] ];
// 将所有子数组转为Set,方便快速查找
const setArray = myArray.map(subArr => new Set(subArr));
// 以第一个数组为基准筛选符合条件的元素
const newArray = myArray[0].filter(item => {
  return setArray.every(set => set.has(item));
});
console.log(newArray); // 输出: [3,4]

这种方法在处理大规模数据的时候,性能表现会比第一种好不少~

内容的提问来源于stack exchange,提问作者mauabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:25:08