Javascript 从4级json对象数组返回特定的json项

Javascript 从4级json对象数组返回特定的json项,javascript,arrays,json,Javascript,Arrays,Json,我有一个json对象数组。第一个对象总是有空数据,第二个和其他项总是有相同的结构 如何返回一个数组项(1个对象),其中包含特定的文档字段(x.data.outputs.document) 我试过这个: x.find( item => item.data.outputs.document == "a8ab1940bf8a7e13fe8e805470756a28" ) TypeError:无法读取未定义的属性“document” 这(同样的错误): 是否可以访问文

我有一个json对象数组。第一个对象总是有空数据,第二个和其他项总是有相同的结构

如何返回一个数组项(1个对象),其中包含特定的
文档
字段(
x.data.outputs.document

我试过这个:

  x.find(
    item =>
      item.data.outputs.document == "a8ab1940bf8a7e13fe8e805470756a28"
  )
TypeError:无法读取未定义的属性“document”

这(同样的错误):


是否可以访问
文档
字段并查找具有某些
文档
值的对象?

数据
输出
都是数组,在访问其子项之前,您需要使用适当的索引访问它,例如:
el.data[0]。输出[0]。文档
。在您的情况下,您正在搜索一个特定的值,因此它应该是:

var x=[
{
时间戳:3455435654345,
散列:“f78ed219d5b60a3665e7382f”,
数据:[],
零时:,
难度:2
},
{
时间戳:1528020475945,
散列:“01a3c43290652bc8f858651dc5”,
数据:[
{
id:“fc453bd0-6715-11e8-b7d9-1156BDD578E”,
输入:{
时间戳:1528020475917,
地址:
“0GCSQGSIB3DQEBAQUA4GNADCBIQBGQC4DCQ3P5FS”,
签名:
“af43a84e5e0e59b9af713cc5e99ce768b318e5”
},
产出:[
{
文件:“a8ab1940bf8a7e13fe8e805470756a28”,
地址:
“IGFMA0GCSQGSIB3DQEBAQAA4GNADCBICKBGQC”
}
]
}
],
暂时:2,
难度:1
},
{
时间戳:1528020491868,
散列:“fb47a96d8a3bce4d81fe88122d60266a”,
数据:[
{
id:“05c5ca30-6716-11e8-b7d9-1156bded578e”,
输入:{
时间戳:1528020491859,
地址:
“A0GCSQGSIB3DQEBAQAA4GNADCBIQKBGQC4DCQ3P5”,
签名:
“152D22B6328BEA1C4815BAD6392448BB11A”
},
产出:[
{
文件:“5CBE7E76BC24D54E71BCB45DAA793C”,
地址:
“Q3p5fsozmemlixx5qfo7\nGCaa7eNu82Cl”
}
]
}
],
暂时:1,
难度:2
}
];
外部:用于(让项目为x){
for(让项目的数据为.data){
让match=data.outputs.find(o=>o.document==“a8ab1940bf8a7e13fe8e805470756a28”);
如果(匹配){
控制台日志(匹配);
打破外部;
}
}

}
数据
输出
都是数组,在访问其子项之前,您需要使用适当的索引来访问它,例如:
el.data[0]。输出[0]。文档
。在您的情况下,您正在搜索一个特定的值,因此它应该是:

var x=[
{
时间戳:3455435654345,
散列:“f78ed219d5b60a3665e7382f”,
数据:[],
零时:,
难度:2
},
{
时间戳:1528020475945,
散列:“01a3c43290652bc8f858651dc5”,
数据:[
{
id:“fc453bd0-6715-11e8-b7d9-1156BDD578E”,
输入:{
时间戳:1528020475917,
地址:
“0GCSQGSIB3DQEBAQUA4GNADCBIQBGQC4DCQ3P5FS”,
签名:
“af43a84e5e0e59b9af713cc5e99ce768b318e5”
},
产出:[
{
文件:“a8ab1940bf8a7e13fe8e805470756a28”,
地址:
“IGFMA0GCSQGSIB3DQEBAQAA4GNADCBICKBGQC”
}
]
}
],
暂时:2,
难度:1
},
{
时间戳:1528020491868,
散列:“fb47a96d8a3bce4d81fe88122d60266a”,
数据:[
{
id:“05c5ca30-6716-11e8-b7d9-1156bded578e”,
输入:{
时间戳:1528020491859,
地址:
“A0GCSQGSIB3DQEBAQAA4GNADCBIQKBGQC4DCQ3P5”,
签名:
“152D22B6328BEA1C4815BAD6392448BB11A”
},
产出:[
{
文件:“5CBE7E76BC24D54E71BCB45DAA793C”,
地址:
“Q3p5fsozmemlixx5qfo7\nGCaa7eNu82Cl”
}
]
}
],
暂时:1,
难度:2
}
];
外部:用于(让项目为x){
for(让项目的数据为.data){
让match=data.outputs.find(o=>o.document==“a8ab1940bf8a7e13fe8e805470756a28”);
如果(匹配){
控制台日志(匹配);
打破外部;
}
}

}
您可以使用
obj&&obj.prop1&&obj.prop1.prop2等语法保护对嵌套属性的访问

var数据=[{
时间戳:3455435654345,
散列:“f78ed219d5b60a3665e7382f”,
数据:[],
零时:,
难度:2
}, {
时间戳:1528020475945,
散列:“01a3c43290652bc8f858651dc5”,
数据:[{
id:“fc453bd0-6715-11e8-b7d9-1156BDD578E”,
输入:{
时间戳:1528020475917,
地址:“0GCSQGSIB3DQEBAQUA4GNADCBIQKBGQC4DCQ3P5FS”,
签名:“af43a84e5e0e59b9af713cc5e99ce768b318e5”
},
产出:[{
文件:“a8ab1940bf8a7e13fe8e805470756a28”,
地址:“IGFMA0GCSQGSIB3DQEBAQAA4GNADCBICKBGQC”
}]
}],
暂时:2,
难度:1
}, {
时间戳:1528020491868,
散列:“fb47a96d8a3bce4d81fe88122d60266a”,
数据:[{
id:“05c5ca30-6716-11e8-b7d9-1156bded578e”,
输入:{
时间戳:1528020491859,
地址:“A0GCSQGSIB3DQEBAQAA4GNADCBIQKBGQC4DCQ3P5”,
签名:“152D22B6328BEA1C4815BAD639248BB11A”
},
产出:[{
文件:“5CBE7E76BC24D54E71BCB45DAA793C”,
地址:“Q3P5FSOZMEMLIXX5QFO7\nGCaa7eNu82Cl”
}]
}],
暂时:1,
难度:2
}];
函数findObjectsWithAddress(地址){
返回数据过滤器(
a=>
a、 资料&&
a、 data.find(
b=>
b、 输出&&
b、 outputs.find(c=>c.address==address)
)
)
}
函数extractAddresses(){
变量地址=[]
对于(让一组数据){
如果(!a.data){
继续;
}
对于(a.数据中的b){
如果(!b.输出){
继续;
}
对于(让c/b输出){
if(c中的“地址”){
地址。推送(c地址)
  x.find(
    item =>
      item.data.outputs.document == "a8ab1940bf8a7e13fe8e805470756a28"
  )
var newArray = str.filter(function(el) {
  return el.data.outputs.document == "5cbe7e76bc24d54e71bcb45daa793a3c";
});