reactjs - 如何渲染嵌套数组?
问题描述
我收到来自端点的响应,它是:
[[{"1":"91"}],[{"1":"1"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}],[{"1":"0"}]]
我获取了它们并得到了结果,但我无法渲染它们。这是我一直在尝试的:
render() {
const {count} = this.state;
return (
<div>
{count.count && count.count.map(item => (
item.value.map(data => (
data.value.map(x => (
<p>{x.value}</p>
))
))
))}
</div>
)
}
我希望输出是 json 响应中显示的所有数字。前任。91 1 0 0 0 等
解决方案
首先,您尝试迭代的数组的结构就像一个数组数组,其中包含对象。因此,首先开始迭代第一个和第二个数组,然后迭代其中的对象。Object.keys
可以用于那个。
您可以像下面这样访问它,
...
<div>
{count &&
count.length > 0 &&
count.map(
item =>
item.length > 0 &&
item.map(
el =>
Object.keys(el).length > 0 &&
Object.keys(el).map(val => <p>{el[val]}</p>)
)
)}
</div>
...
Codesandbox 演示在这里
Stackblitz 演示在这里
推荐阅读
- php - 将文件内的数组(通过 file_get_contents 获取)转换为实际的 php 数组
- spring - Swagger - 使用 swagger boot starter 在 tomcat 中部署 spring webflux boot war 时出错
- javascript - 如何多次同时运行一个函数,将参数传递给具有相同类名的div
- reactjs - 为什么当窗口位置改变时反应路由器开关不起作用?
- bluetooth - Wireshark 无法打开 btsnoop 文件
- javascript - 一起使用麦克风输入进行语音识别和网络音频?
- html - 使用不带JS的sticky位置防止固定元素与页脚重叠
- java - 如何将 JTextPane 和 JTextArea 添加到 JScrollPane?
- python - 为什么当数据转换为数组时我的循环没有运行?
- environment-variables - 在 Slurm 中将 $USER(或等效项)传递给 --chdir 的方法