首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数组中的数组映射对象值

从数组中的数组映射对象值
EN

Stack Overflow用户
提问于 2022-04-28 10:37:52
回答 3查看 61关注 0票数 0
代码语言:javascript
复制
const course = [{
    id: 1,
    name: 'Half Stack application development',
    parts: [
      {
        name: 'Fundamentals of React',
        exercises: 10,
        id: 1
      },
      {
        name: 'Using props to pass data',
        exercises: 7,
        id: 2
      },
      {
        name: 'State of a component',
        exercises: 14,
        id: 3
      }
    ]
  },
  {
    name: 'Node.js',
    id: 2,
    parts: [
      {
        name: 'Routing',
        exercises: 3,
        id: 1
      },
      {
        name: 'Middlewares',
        exercises: 7,
        id: 2
      }
    ]
  }
]

我发现很容易映射名称"Half Development“和"Node.js”,并通过以下操作显示它们:

代码语言:javascript
复制
{course.map(c => <li>{c.name}</li>)}

但是,course.parts.map(c => <li>{c.name}</li>)返回未定义的。

你怎么把它映射成这样

半栈应用程序开发

使用道具传递组件

  • 状态的
  • 的基本原理

Node.js

  • Routing
  • Middleware

为什么course.parts.map(p => p.name)返回未定义的名称,以及如何访问部件数组中的名称?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-04-28 10:51:48

你需要在地图中画一张地图。

这应该是可行的:

代码语言:javascript
复制
   <ul>
    {course.map(c => (
      <>
        <li>{c.name}</li>
        <ul>
          {c.parts.map(p =>
            <li>{p.name}</li>)}
        </ul>
        </>
    ))}
    </ul>
票数 0
EN

Stack Overflow用户

发布于 2022-04-28 10:58:14

下面是一个使用堆栈片段和ReactJS (v16.8.0)实现预期目标的工作演示。

代码语言:javascript
复制
const Thingy = ({courses, ...props}) => {
  return (
    <div>
      {courses.map(c => (         // iterate over the "courses" array
        <div>
          <h4>{c.name}</h4>
          {c.parts.map(p => (     // now, for each "course", iterate over "parts" array
            <li>{p.name}</li>
          ))}
        </div>
      ))}
    </div>
  );
};

const course = [{
    id: 1,
    name: 'Half Stack application development',
    parts: [
      {
        name: 'Fundamentals of React',
        exercises: 10,
        id: 1
      },
      {
        name: 'Using props to pass data',
        exercises: 7,
        id: 2
      },
      {
        name: 'State of a component',
        exercises: 14,
        id: 3
      }
    ]
  },
  {
    name: 'Node.js',
    id: 2,
    parts: [
      {
        name: 'Routing',
        exercises: 3,
        id: 1
      },
      {
        name: 'Middlewares',
        exercises: 7,
        id: 2
      }
    ]
  }
]

ReactDOM.render(
  <div>
    DEMO
    <Thingy courses={course} />
  </div>,
  document.getElementById("rd")
);
代码语言:javascript
复制
<div id="rd" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.0/umd/react-dom.production.min.js"></script>

解释

将内联注释添加到上面的片段中。

票数 1
EN

Stack Overflow用户

发布于 2022-04-28 10:43:37

courseparts都是数组,因此不能直接获得course.parts。您可以为渲染进行双重映射,如下所示

代码语言:javascript
复制
{course.map(c => <>
   <p>{c.name}</p>
   <ul>
      {c.parts.map(part => <li>{part.name}</li>)}
   </ul>
</>)}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72042207

复制
相关文章

相似问题

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