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

ES6中嵌套数组的gid与subGroups去重合并问题

解决方案

要合并gid和subGroups的内容并生成无重复的字符串数组,你需要先把所有层级的相关元素收集到一个数组,再进行去重操作。

修改后的代码

const oldGroup = [
    {
        "gid": "JFK",
        "subGroups": [
            "SFO",
            "LAX"
        ]
    },
    {
        "gid": "JFK",
        "subGroups": [
            "SFO",
            "LAX"
        ]
    },
    {
        "gid": "SFO",
        "subGroups": []
    },
    {
        "gid": "LAX",
        "subGroups": [
            "LGA"
        ]
    }
]

// 使用flatMap收集所有gid和subGroups元素,再通过Set去重
const newGroup = [...new Set(oldGroup.flatMap(group => [group.gid, ...group.subGroups]))]

console.log(newGroup) // 输出: ["JFK", "SFO", "LAX", "LGA"]

代码说明

  • flatMap方法会遍历数组中的每个对象,将每个对象转换为包含gid和其subGroups所有元素的数组,同时自动将这些子数组合并成一个一维数组
  • new Set()会自动过滤掉重复的元素
  • 最后通过扩展运算符...将Set转换回数组,得到无重复的结果

替代方案(使用reduce)

如果更习惯用reduce,也可以这样实现:

// 先收集所有元素
const allElements = oldGroup.reduce((total, group) => {
    total.push(group.gid);
    total.push(...group.subGroups);
    return total;
}, []);

// 去重得到最终数组
const newGroup = [...new Set(allElements)];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:35:40