提问人:RB50 提问时间:10/28/2023 最后编辑:RB50 更新时间:10/28/2023 访问量:60
如何从嵌套的 ForEach 方法返回数组?[复制]
How to Return an Array from a Nested ForEach Method? [duplicate]
问:
我已经使用数据结构工作了好几天,终于使用嵌套的 forEach 循环从中获取我想要的数据。麻烦的是,我为每个循环都得到了一个字符串,所以在我的控制台中。我看到每个项目的一长串单独的字符串。我需要查看所有字符串的数组。
谁能告诉我如何更改我的代码来实现这个结果?还是我完全走错了路?谢谢。
data.forEach(brandGuideline => {
brandGuideline.children.forEach(child => {
const brandGuidelineAlias = child.component.alias;
console.log(brandGuidelineAlias); // Long list of individual strings. Can this be an array?
});
});
我尝试创建一个空数组并将我的数据推入其中,但这不起作用,因为我在 forEach 内部——所以我最终为每个项目得到了一个巨大的数组。咄。
我还尝试将我的逻辑包装在一个函数中,并在最后将数据推送到一个数组中,但这不起作用,因为数组超出了范围。等等。
这是我之前尝试过的(作为对 Barmar 的回答):
let arrayOfAliases = [];
data.forEach(brandGuideline => {
brandGuideline.children.forEach(child => {
const brandGuidelineAliases = child.component.alias;
console.log(brandGuidelineAliases); // Need to only show buttons if
'brand-guidelines' is part of the path.
arrayOfAliases.push(brandGuidelineAliases);
console.log('Alias Array: ', arrayOfAliases);
});
});
答:
0赞
Nina Scholz
10/28/2023
#1
您可以对外部数组采用平面映射方法,对内部数组采用简单映射
result = data
.flatMap(({ children }) => children.map(({ component: { alias } }) => alias));
评论
0赞
gog
10/28/2023
不需要这些解构,简单的更短,更易读。data.flatMap(item => item.children.map(child => child.component.alias))
0赞
MWB
10/28/2023
另请参阅我的回答:)
1赞
MWB
10/28/2023
#2
如果我理解正确的话,你想使用平面地图。
data.flatMap(brandGuideline =>
brandGuideline.children.map(child => child.component.alias))
这应该会给你一个包含所有别名的数组。
评论
0赞
RB50
10/28/2023
这个回复和我标记为“正确”的回复一样有用。为了公平起见,我标记了最先到达的答案。非常感谢!
上一个:如何按值对字典中的字典进行排序?
评论
.map()
forEach
undefined