gpt4 book ai didi

javascript - 在 ES6 中过滤和组合嵌套数组

转载 作者:行者123 更新时间:2023-12-05 03:16:27 25 4
gpt4 key购买 nike

我需要合并 gidsubGroups 并将其输出到一个字符串数组中而不重复。我现在的问题是它只能获得第一级。

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

const newGroup = [...new Set(oldGroup.map((group) => group.gid))]

console.log(newGroup)

最佳答案

有几种方法可以实现这一点,这里是使用 .reduce() 的方法:

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

const newGroup = Object.keys(oldGroup.reduce((acc, obj) => {
acc[obj.gid] = true;
obj.subGroups.forEach(name => { acc[name] = true; } );
return acc;
}, {}));

console.log(newGroup)

解释:

  • .reduce() 有两个参数:
    • 一个函数参数有两个选项 acc, obj。前者是记录所需数据的累加器,后者是数组项对象
    • 一个初始设置,在我们的例子中是空的 {} 对象
  • Object.keys() 应用于累积数据

关于javascript - 在 ES6 中过滤和组合嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74650783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com