【问题标题】:How to map an Array of objects, that have arrays in the objects如何映射对象数组,对象中有数组
【发布时间】:2017-08-09 22:48:07
【问题描述】:

我的问题在标题中有点难以解释。但作为反应,我正在尝试映射一个看起来像这样的元素

[
  { 
    logicLayer: { name: someName, etc }, 
    subComps: [ { name: anotherName, etc },{ name: anotherName, etc } ]
  },
  { 
    logicLayer: { name: someName, etc }, 
    subComps: [ { name: anotherName, etc },{ name: anotherName, etc } ]
  },
  etc
]

到下拉按钮菜单

// 这很好用

return (
        singular.buttonGroups.map(( buttonGroup, index1 ) =>
          buttonGroup.subComps.map(( subComp, index2 ) =>
            <MenuItem key={index2}><b>{buttonGroup.logicLayer.name}:</b> {subComp.name}</MenuItem>
          )
        )
      );

但我真正想做的是在它迭代内部数组之后放置一个“分隔符”.. 像这样

// 这不起作用

return (
        singular.buttonGroups.map(( buttonGroup, index1 ) =>
          buttonGroup.subComps.map(( subComp, index2 ) =>
            <MenuItem key={index2}><b>{buttonGroup.logicLayer.name}:</b> {subComp.name}</MenuItem>
          )
            <MenuItem divider></MenuItem>  // THIS LINE DOESN'T WORK
        )
      );

我怎样才能正确映射它,以便在它迭代其中一个对象的数组后放置一个分隔符?

编辑:如果有不需要我将其包装在 div 容器中的解决方案,那就太好了

【问题讨论】:

    标签: javascript reactjs ecmascript-6 ecmascript-5


    【解决方案1】:

    你需要用一些容器包装它:

    return (
        singular.buttonGroups.map(( buttonGroup, index1 ) =>
          <div> 
              {buttonGroup.subComps.map(
                 ( subComp, index2 ) =>
                    <MenuItem key={index2}><b>{buttonGroup.logicLayer.name}:</b> {subComp.name}</MenuItem>
              )}
              <MenuItem divider></MenuItem>  // THIS LINE DOESN'T WORK
          </div>
        )
      );
    

    【讨论】:

    • 成功了,谢谢! div 似乎确实弄乱了 CSS .. 但至少我明白为什么我的原始代码不起作用.. 再次
    • 不客气 :) 您可以将 div 更改为任何其他元素(或使用 css 修复样式)。
    猜你喜欢
    • 2021-12-04
    • 2022-06-17
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多