javascript - reactJS - JSX 映射数组以形成元素,但将每四个元素分组
问题描述
我想创建一个包含大约 30 个元素的表单,其语义 UI 如下所示:
<Form.Input
id="survive"
type="number"
label="survive"
required
/>
Form.Input
所以我想创建一个包含所有id的数组,map
它们如下所示:
return (
myArray.map((element) => {
<Form.Input id={element} label={element} type="number"/>
})
如何将每四个元素与 array.map() 函数组合在一起?手动它会像这样工作,但我相信有一种更有效的方法,就像手动这样
<Form.Group>
<Form.Input id="1"/>
<Form.Input id="2"/>
<Form.Input id="3"/>
<Form.Input id="4"/>
</Form.Group>
解决方案
你不能仅仅.map(..)
因为.map(..)
返回一个与原始数组具有相同数量的元素的数组,并且预期的结果是一个具有myArray.length / 4
元素数量的数组。
为此,您可以使用 和 的组合.reduce(..)
,.map(..)
这是一个示例:
myArray.reduce((a, c, i) => {
if (i % 4 === 0) {
a.push([]);
}
a[a.length - 1].push(c);
return a;
}, []).map((arr) => (
<Form.Group>
{arr.map(element => (<Form.Input id={element} label={element} type="number"/>))}
</Form.Group>
))
这样做是首先创建一个二维数组(内部数组有 4 个元素),然后映射第一维和第二维。
推荐阅读
- c++ - 我可以从构造函数中传递成员函数指针吗?
- masstransit - 无法通过 SSL 使用 MassTransit 连接到 AmazonMQ
- node.js - 我下载了更新版本的 Jest,现在我的反应应用程序无法打开
- python - 阻止 py.exe 打开新的控制台窗口
- shell - 詹金斯管道找不到shell文件
- python - Pandas 数据框到 JSON 层次结构
- excel - 计数范围的总和是否满足条件
- vue.js - Vuejs beforeRouteEnter 没有收到数据。不明确的
- python - 无法从网页中抓取所有评论
- r - 应用多个类别进行预测时出现 Keras 错误