首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对包含其他对象和数组的整个数组进行映射?

如何对包含其他对象和数组的整个数组进行映射?
EN

Stack Overflow用户
提问于 2021-11-14 12:33:22
回答 3查看 81关注 0票数 1

我已经创建了一个包含其他对象的JavaScript数组。子对象包含数组。现在,我想在React中遍历整个父对象。我使用了以下方法,但不起作用:

阵列

代码语言:javascript
复制
const users =[
    {
        id:1,
        username: "user1",
        path: "/user",
        listItems: {lists:["list-1", "List-2", "List-3", "List-4", "List-5"], path: ["/list-1", "/List-2", "/List-3", "/List-4", "/List-5"]}
    },
    {
        id:2,
        username: "user2",
        path: "/user2",
        listItems: {lists:["list-1", "List-2", "List-3", "List-4", "List-5"], path: ["/list-1", "/List-2", "/List-3", "/List-4", "/List-5"]}
    },
    {
        id:3,
        username: "user3",
        path: "/user3",
        listItems: {lists:["list-1", "List-2", "List-3", "List-4", "List-5"], path: ["/list-1", "/List-2", "/List-3", "/List-4", "/List-5"]}
    }
]

usersInfo组件

代码语言:javascript
复制
export default function usersInfo(props){
const users = props.users;
return(
<div className="container">
{users.map((item)=>{
    return(
        <section className="user">
        <h1>{item.username}</h1>
        <p>{item.path}</p>
        <Link href={item.path}>Visit</Link>
        <p>Users lists</p>
        <ul>
        {item.listItems.map((topic)=>{
            <Link href={topic.path}<li>{topic.lists}</li>
        })}
        </ul>
        </section>  
)})}

</div>
)}

在反应中使用usersInfo常量:

代码语言:javascript
复制
<usersInfo users = {users}/>

一切都很好。但是,在试图通过包含两个数组的listItems对象( listspath )进行映射时,我遇到了一个问题。我该怎么解决这个问题?

我期望这样的输出:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-14 12:38:40

你错过了,

替换这个,这是错误的,.map()不能在这里工作,因为listItems是它的json对象,您需要修改这段代码,

代码语言:javascript
复制
    <ul>
    {item.listItems.map((topic)=>{
        <Link href={topic.path}<li>{topic.lists}</li>
    })}
    </ul>

取代这个,这会起作用的

代码语言:javascript
复制
<ul>
{
  item.listItems.lists.map((list)=>{
    <li>{list}</li>
  })
  item.listItems.path.map((topic)=>{
    <Link href={topic.path}<li>{topic.lists}</li>
  })
}
</ul>
票数 1
EN

Stack Overflow用户

发布于 2021-11-14 12:43:47

如果保证listspaths索引匹配,并且希望<li>元素包含链接,则只需执行以下操作:

代码语言:javascript
复制
<ul>
    {item.listItems.lists.map((listItem, listIndex)=>{
       return(<li><Link href={item.listItems.path[listIndex]}>{listItem}</Link></li>);
    })}
</ul>
票数 0
EN

Stack Overflow用户

发布于 2021-11-14 12:51:11

您正在尝试在对象上使用map方法。map是Array方法,对象不可用。Object.keys.map必须解决这个问题。

代码语言:javascript
复制
export default function usersInfo(props){
const users = props.users;
return(
<div className="container">
{users.map((item)=>{
    return(
        <section className="user">
        <h1>{item.username}</h1>
        <p>{item.path}</p>
        <Link href={item.path}>Visit</Link>
        <p>Users lists</p>
        <ul>
        {Object.keys(item.listItems)[0].map((list, i)=>{
          
            <Link href={item.listItems.path[i]}<li>{list}</li>
        })}
        </ul>
        </section>  
)})}

</div>
)}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69963026

复制
相关文章

相似问题

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