Javascript 访问嵌套JSON对象
这个问题已经被回答了很多次,但由于某些该死的原因,我不能让它在我的案件中起作用 我正在解析以太坊区块链,并得到一个结果,我将其存储在状态为Javascript 访问嵌套JSON对象,javascript,arrays,object,Javascript,Arrays,Object,这个问题已经被回答了很多次,但由于某些该死的原因,我不能让它在我的案件中起作用 我正在解析以太坊区块链,并得到一个结果,我将其存储在状态为this.state.eventData 数据如下所示: [ [{ "logIndex": 0, "transactionIndex": 0, "transactionHash": "0xec912b5811f72b9e821fd62f7c79e45c09c641bb9bf4fff
this.state.eventData
数据如下所示:
[
[{
"logIndex": 0,
"transactionIndex": 0,
"transactionHash": "0xec912b5811f72b9e821fd62f7c79e45c09c641bb9bf4fff3be9e4997be27cd76",
"blockHash": "0x84f988d6611ba75e8321e20abf23620d68efb0ff721b85447b8072cd5ff07525",
"blockNumber": 16,
"address": "0x985b025b6baa40c6d5c7247f4d608efdfc24b81b",
"type": "mined",
"event": "EventOne",
"args": {
"paramOne": "0x6a7a88d1f9f6250e1115d05a0489e584d0a0c7c0",
"paramTwo": "90",
"paramThree": "2",
"paramFour": "479",
"paramFive": "110123595505617976",
"paramSix": "1",
"paramSeven": true
}
},
{
"logIndex": 0,
"transactionIndex": 0,
"transactionHash": "0x776ecfd9a1efe0a0d399a4a3d56f2121d5305e4d3219c13ca4e960bcdcce460c",
"blockHash": "0x109907689e47d96a61bffc0ec4eac5cf4295361d57c9a25fe53aa68e1412eadc",
"blockNumber": 18,
"address": "0x985b025b6baa40c6d5c7247f4d608efdfc24b81b",
"type": "mined",
"event": "EventOne",
"args": {
"paramOne": "0x6a7a88d1f9f6250e1115d05a0489e584d0a0c7c0",
"paramTwo": "90",
"paramThree": "17",
"paramFour": "480",
"paramFive": "110123595505617976",
"paramSix": "2",
"paramSeven": true
}
}
]
]
我通过console.log(eventData)获得了这些数据,然后从Chrome控制台复制对象。在这里输入code
我只想得到,比如说,每个对象的paramOne
。当我试图简单地console.log(this.state.eventData[[0].args])
时,我得到了一个未定义的错误
我非常感谢您在这场斗争中的帮助。要检索所有这些,您可以使用
this.state.eventData[0]
数组上的map
:
this.state.eventData[0].map(event => event.args.paramOne)
// ["0x6a7a88d1f9f6250e1115d05a0489e584d0a0c7c0", "0x6a7a88d1f9f6250e1115d05a0489e584d0a0c7c0"]
好。。。你得到了一个数组中的一个数组。因此,在尝试访问args属性之前,至少需要两个单独的索引
foo[x][y].args
那么是否为this.state.eventData[0][0].args?我已经尝试过了,但它仍然会给我一个错误。是的,但我无法保证在填充此.state.eventData之后您正在访问它。我猜您访问它的时间太快了。我是console.logging this.state.eventData,它会在控制台中显示已填充的对象,但当我通过添加这些参数更改console.log()的值时,它会给我一个未定义的错误。因为控制台具有此功能,如果您将console.log对象或数组,它不会检查对象或数组,直到您在控制台中单击以展开它。在展开时,它会查看数组或对象的内容并将其显示给您。例如,如果您改为记录数组的长度,您会发现在该时间点它实际上是0,而不是1。