javascript - 如何在 React 中“展平”嵌套对象数组?
问题描述
我有一个包含以下格式的多条记录的对象:
["name": 'The Belvedere',
"units":[
{"unit_num": 1,
"street": '1234 Main',
"monthly_rent": 900,
"lease_expiration" 2021-11-01
},
{"unit_num": n,
"street": 'Some address',
"monthly_rent": 900,
"lease_expiration" 2021-11-01
}
]
对于多个“名称”中的每一个,它们都有一个且只有一个“单元”数组,并且在“单元”数组中,将有一对多的“unit_num”与关联的“街道”。我正在尝试生成一个看起来像这样的平面表。
姓名 | 街道 | 租 | 租 |
---|---|---|---|
丽城 | 第1234章 | 900 | 2021-11-01 |
丽城 | 第1235章 | 875 | 2022-03-21 |
格雷森 | 345枫 | 925 | 2023-10-31 |
... |
目前的代码是这样的:屏幕映射“租赁”对象并调用租赁组件并传递单个“租赁”条目。
return (
<div className="container">
<h1>Leases</h1>
<div className="row justify-content-center mt-5 lease">
{loading ? (
<h1>
<Loader />
</h1>
) : error ? (
<h1>Error</h1>
) : (
leases.map((lease) => {
return (
<div className="col-md-9">
<Lease lease={lease} />
</div>
);
})
)}
</div>
</div>
);
Lease 组件将其打印到屏幕上。
return (
<div>
<MDBTable hover>
<MDBTableBody>
<tr>
<td>{name}</td>
<td>{street}</td>
<td>{monthly_rent}</td>
<td>{lease_expiration}</td>
</tr>
</MDBTableBody>
</MDBTable>
</div>
);
我面临的挑战是因为我正在迭代对象,我可以让每一行显示,但它们不在表格中,只是屏幕上的单独行。
但是我不知道如何将整个数据集对象传递给 Lease 组件,并在该组件中迭代然后填充并返回填充的表,而不是单独传递“名称”。
有什么建议么?
解决方案
您还可以映射units
租赁对象的属性并Lease
为每个单元返回一个组件:
leases.map((lease) => {
return lease.units.map(unit) => { return (
<div className="col-md-9">
<Lease lease={...unit, name: lease.name} />
</div>
);
})
推荐阅读
- mysql - 需要设计大学数据库的建议
- java - UIautomatorviewer.bat 中没有资源 ID 元素
- jquery - 外部加载的导航无法在移动设备上运行
- javascript - 如果进度条的值为 100,如何使按钮出现?
- android - Google-Fit Sensors API 未找到手表
- image - 如何将图像制作为切换按钮以在本机反应中显示两个不同的图像
- ibm-midrange - 如果没有程序更改,是否有任何方法可以处理“接收器太小而无法容纳结果”问题
- sql - SQL查询从多条记录中获取结果到一行
- typescript - TypeScript,详尽性检查无法正常工作
- reactjs - react.js 模块中的多个导出默认值