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

如何使用ES6+语法合并二维数组并去除重复元素

实现方案

最优一行实现(推荐)

ES2019 引入的 flat() 配合 Set 去重可以用最少的代码实现需求,可读性和性能都足够覆盖普通业务场景:

const topicsArrayMergedWithoutDuplicates = [...new Set(mapedTopicsArray.flat())]

逻辑说明:

  • Array.prototype.flat() 默认展开一层嵌套数组,刚好适配你当前的二维数组结构,直接就能把二维数组拍平为 ['javascript', 'reactjs', 'Java', 'reactjs']
  • Set 是ES6引入的内置对象,自身特性就是存储的元素不会重复,传入拍平后的数组会自动剔除重复值
  • 最后用扩展运算符 ... 把Set实例转回普通数组即可

如果需要适配更深层级的嵌套数组,给 flat() 传参数 Infinity 就能展开所有层级。


reduce 版本实现(符合你提的reduce实现需求)

如果明确要用reduce实现,逻辑是遍历每个子数组,判断元素是否已经存在于累加结果中,不存在就推入:

const topicsArrayMergedWithoutDuplicates = mapedTopicsArray.reduce((acc, currentSubArray) => {
  currentSubArray.forEach(item => {
    if (!acc.includes(item)) acc.push(item)
  })
  return acc
}, [])

内容的提问来源于stack exchange,提问作者Cristian Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:01