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

如何在JavaScript中找出嵌套数组的重复值并存储?

如何在JavaScript中找出嵌套数组中三个子数组的重复值?

假设你的嵌套数组结构是Arr = [arr1, arr2, arr3](其中arr1、arr2、arr3均为元素数组),要提取三个子数组的共同重复值(即三个数组的交集)存入Arr2,可以用以下几种方式实现:

针对固定三个子数组的实现

如果确定只有三个子数组,直接通过Set提升查找效率,再筛选交集:

// 示例输入
const arr1 = [1, 2, 3, 4, 2];
const arr2 = [2, 3, 5, 6];
const arr3 = [2, 3, 7, 8];
const Arr = [arr1, arr2, arr3];

// 将后两个子数组转为Set,优化查找速度
const set2 = new Set(Arr[1]);
const set3 = new Set(Arr[2]);

// 从第一个数组筛选出同时存在于另外两个数组的元素
let Arr2 = Arr[0].filter(item => set2.has(item) && set3.has(item));

// 若需确保Arr2无重复(比如第一个子数组本身有重复元素),再去重
Arr2 = [...new Set(Arr2)];

console.log(Arr2); // 输出: [2, 3]

说明

  • 使用Set的has()方法是因为它的时间复杂度为O(1),比数组的includes()更高效,适合处理大数据量的场景。
  • 如果你的子数组本身已经是无重复的,可以省略最后一步去重操作。

通用化实现(支持任意数量子数组)

如果后续可能扩展子数组数量,可以写一个通用函数,通过reduce逐步求数组交集:

function findCommonElements(nestedArr) {
  if (nestedArr.length === 0) return [];
  
  // 以第一个数组为基准,依次和后续数组求交集
  return nestedArr.reduce((commonElements, currentArr) => {
    const currentSet = new Set(currentArr);
    // 筛选出当前公共元素中存在于当前数组的项,同时去重
    return [...new Set(commonElements.filter(item => currentSet.has(item)))];
  }, nestedArr[0]);
}

// 调用示例
const Arr = [[1,2,3,4], [2,3,5,6], [2,3,7,8], [2,3,9]];
const Arr2 = findCommonElements(Arr);
console.log(Arr2); // 输出: [2, 3]

处理引用类型元素(如对象)

如果子数组中的元素是对象等引用类型,需要自定义比较逻辑,因为Set默认比较引用地址:

function findCommonObjects(nestedArr, compareFn) {
  if (nestedArr.length === 0) return [];
  
  return nestedArr.reduce((common, currentArr) => {
    return common.filter(commonItem => {
      // 用自定义函数判断当前数组中是否存在匹配项
      return currentArr.some(currentItem => compareFn(commonItem, currentItem));
    });
  }, nestedArr[0]);
}

// 示例:根据对象的id属性判断是否重复
const arr1 = [{id: 1}, {id: 2}, {id: 3}];
const arr2 = [{id: 2}, {id: 3}, {id: 4}];
const arr3 = [{id: 2}, {id: 3}, {id: 5}];
const Arr = [arr1, arr2, arr3];

const Arr2 = findCommonObjects(Arr, (a, b) => a.id === b.id);
console.log(Arr2); // 输出: [{id: 2}, {id: 3}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35