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
相关产品推荐
相关产品推荐

