首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Map中映射以获取子数组

在Map中映射以获取子数组
EN

Stack Overflow用户
提问于 2019-11-27 22:26:26
回答 3查看 438关注 0票数 1

我有以下数据:

代码语言:javascript
复制
{
"data": {
"site": {
  "siteMetadata": {
    "siteLinks": [
      {
        "title": "title 1",
        "submenu": [
          {
            "title": "test-1",
          }
        ]
      },
      {
        "title": "title 2",
        "submenu": [
          {
            "title": "test-2",
          }
        ]
      },
      {
        "title": "title-3",
        "submenu": [
          {
            "title": "test-3",
          }
        ]
      },
      {
        "title": "title-4",
        "submenu": [
          {
            "title": "test-4",
          }
        ]
      }
    ]
  }
}

}}

我正在尝试映射以获得子菜单标题。我已经设法用下面的代码获得了第一个标题,但我正在努力获得地图中的地图。

代码语言:javascript
复制
import React from "react"

const Header = props => (
<div>
    {props.siteLinks.map((item, key) => (
        <div>
            <li key={item.title}>{item.title}</li>
        </div>
    ))}
</div>
)

export default Header

任何帮助都将不胜感激

EN

回答 3

Stack Overflow用户

发布于 2019-11-27 22:42:47

您可以在第一个映射函数中添加第二个映射函数

代码语言:javascript
复制
import React from 'react';

const Header = props => (
      <div>
       {props.siteLinks.map((item, key) => (
        <div key={item.title}>
            <li>{item.title}</li>
            {item.submenu.map((x)=>(
              <li key={x.title}>{x.title}</li>
            ))}
        </div>
       ))}
    </div>
)

export default Header;
票数 4
EN

Stack Overflow用户

发布于 2019-11-27 22:54:18

代码语言:javascript
复制
const Header = props => (
  <div>
    {props.siteLinks.map((item, key) => (
        <div key={`${item.title}-${key}`}>
          <h4>{item.title}</h4>
          {item.submenu && item.submenu.map((subitem, i) => (
            <li key={`${item.title}-${key}-${i}`}>{subitem.title}</li>
          ))}
        </div>
    ))}
  </div>
);

const res = {
    data: {
      site: {
        siteMetadata: {
          siteLinks: [
            {
              title: "title 1",
              submenu: [
                {
                  title: "test-1"
                }
              ]
            },
            {
              title: "title 2",
              submenu: [
                {
                  title: "test-2"
                }
              ]
            },
            {
              title: "title-3",
              submenu: [
                {
                  title: "test-3"
                }
              ]
            },
            {
              title: "title-4",
            }
          ]
        }
      }
    }
  };

  
ReactDOM.render(
  <Header siteLinks={res.data.site.siteMetadata.siteLinks} />,
  document.getElementById("root")
);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>

票数 1
EN

Stack Overflow用户

发布于 2019-11-27 22:38:49

像这样的东西应该可以工作,只需接受嵌套数组并重新映射其输出即可。我建议对每一个都使用唯一的键,而不是标题。

代码语言:javascript
复制
import React from 'react';
import uuid from 'uuidv4';

const Header = props => (
    <div>
        {props.siteLinks.map((item, key) => (
            <div>
                <li key={uuid()}>
                    <h2>{item.title}</h2>
                    {item.submenu.map(subitem => (
                        <p key={uuid()}>{subitem.title}</p>
                    ))}
                </li>
            </div>
        ))}
    </div>
);

export default Header;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59072348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档