如何从嵌套的 ForEach 方法返回数组?[复制]

How to Return an Array from a Nested ForEach Method? [duplicate]

提问人:RB50 提问时间:10/28/2023 最后编辑:RB50 更新时间:10/28/2023 访问量:60

问:

我已经使用数据结构工作了好几天,终于使用嵌套的 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);
  });
});
JavaScript foreach 嵌套

评论

3赞 Pointy 10/28/2023
也许研究一下这个功能?目前尚不清楚您需要做什么,您的数据是什么样子以及您希望的结果是什么。.map()
1赞 pilchard 10/28/2023
没有回报,它总是forEachundefined
3赞 Barmar 10/28/2023
推送到数组应该已经起作用了。请展示你尝试过的内容。

答:

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
这个回复和我标记为“正确”的回复一样有用。为了公平起见,我标记了最先到达的答案。非常感谢!