javascript - 如何将 Map 函数用于具有值的数组和另一个数组作为 Javascript 中的值
问题描述
我正在尝试显示课程的一些价值。我如何对这个数据使用 map 函数,它是一个带有名称的数组和另一个数组。
我尝试在创建一个新数组的 map 函数上使用 Map 函数,但我不能添加课程名称,只能添加零件名称
预期的 :
Half Stack application development
Fundamentals of React 10
Using props to pass data 7
State of Component 14
Redux 11
Node.js
Routing 3
Middlewares 7
实际的:
Fundamentals of React 10
Using props to pass data 7
State of Component 14
Redux 11
Routing 3
Middlewares 7
它缺少课程名称和课程的一些分隔
const App = () => {
const courses = [
{
name: "Half Stack application development",
id: 1,
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: "Redux",
exercises: 11,
id: 4
}
]
},
{
name: "Node.js",
id: 2,
parts: [
{
name: "Routing",
exercises: 3,
id: 1
},
{
name: "Middlewares",
exercises: 7,
id: 2
}
]
}
];
const rows = () =>
courses.map(note => note.parts.map(b => <Course key={b.id} course={b}
/>));
const Course = ({ course }) => {
return (
<p>
{" "}
{course.name} {course.exercises}
</p>
);
};
解决方案
您可以使用 reduce 将所有课程的数组展平,并通常像这样映射结果 -
const allCourses = courses.reduce( (agg,course)=>{
return [...agg, course,...course.parts]
},[])
const rows = allCourses.map( course => <Course key={course.id} course={course} /> )
希望这可以帮助!
推荐阅读
- firebase - 无法使用 Flutter Image Network 从 Firebase 存储加载图像
- java - 无法导入 org.testng.annotations.Parameters;在 Eclipse 版本 2020-06 中使用 TestNG 版本 7.3.0
- javascript - 在 HTML 地图的特定位置添加叠加层
- php - Web-push-php 抛出 Class not found 异常
- kubernetes - 分布式 Jmeter 最大服务器数
- java - 用java从xlsx文件中读取数据
- amazon-web-services - 我们可以在 SWF 流的工作流工作者中使用类级别变量来存储活动结果吗?
- flutter - Flutter GridView.count 在其子项上调用 setState 时缩小
- typo3 - 使用 DataHandler 本地化记录和更新
- node.js - 如何在表单数据 nodejs rest API 中发送数据