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

使用Lodash合并多个数组并生成无重复值的单个数组

合并多数组并提取唯一值的解决方案

嘿,这个需求在日常开发里挺常见的,我给你分享几种JavaScript实现方案,都能精准得到你想要的结果:

方法1:ES6 Set + flat(最简洁高效)

利用ES6的Set结构天然去重的特性,配合数组的flat()方法先把多维数组拍平,一步就能搞定:

// 你的原始数组集合
const sourceArrays = [
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

// 生成唯一值数组
const uniqueResult = [...new Set(sourceArrays.flat())];
console.log(uniqueResult);
// 输出:["General Fitness", "Health & Fitness", "Cardiovascular", "Meditation"]

解释:

  • sourceArrays.flat():把嵌套的子数组全部合并成一个一维数组;
  • new Set(...):将一维数组转换为Set结构,自动剔除重复值;
  • [...Set]:用扩展运算符把Set转回普通数组,得到最终结果。

方法2:手动遍历去重(兼容旧环境)

如果需要兼容不支持ES6语法的旧浏览器,可以用reduce配合includes手动判断去重:

const sourceArrays = [
  ["General Fitness", "Health & Fitness"],
  ["Cardiovascular", "Meditation"],
  ["Health & Fitness", "Cardiovascular", "General Fitness"],
  ["Cardiovascular"]
];

const uniqueResult = sourceArrays.reduce((accumulator, currentArray) => {
  currentArray.forEach(item => {
    // 检查当前元素是否已在结果数组中,不存在则添加
    if (!accumulator.includes(item)) {
      accumulator.push(item);
    }
  });
  return accumulator;
}, []); // 初始化结果数组为空

console.log(uniqueResult);
// 同样输出目标数组

小补充

如果你的数组嵌套层级更深(比如三维数组),可以给flat()传参数Infinity,比如sourceArrays.flat(Infinity),就能一次性拍平所有层级的数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:41:39