Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript过滤嵌套js对象数组_Javascript_Json - Fatal编程技术网

使用javascript过滤嵌套js对象数组

使用javascript过滤嵌套js对象数组,javascript,json,Javascript,Json,我试图从嵌套的js对象获取数据,这是我的输入 var数据= [{Id:'123',姓名:'Abc',金额:110000} ,{Id:'567',Name:'DEF',金额:98000} ,{Id:'345',名称:'XYZ',金额:145000} ] ,[{Id:'656',姓名:'Abc',金额:110000} ,{Id:'223',Name:'DEF',金额:98000} ,{Id:'897',名称:'XYZ',金额:145000} ] ] 在这里,当我想获取223的数据时 我不太清楚

我试图从嵌套的js对象获取数据,这是我的输入

var数据=
[{Id:'123',姓名:'Abc',金额:110000}
,{Id:'567',Name:'DEF',金额:98000}
,{Id:'345',名称:'XYZ',金额:145000}
] 
,[{Id:'656',姓名:'Abc',金额:110000}
,{Id:'223',Name:'DEF',金额:98000}
,{Id:'897',名称:'XYZ',金额:145000}
] ] 
在这里,当我想获取
223的数据时
我不太清楚如何在嵌套的js对象中实现它。
在常规js对象数组中,我使用如下的过滤方法

var result= data.filter(element => ((element.Id == "223")).
但是,在嵌套js对象的情况下(在ES6中),我该如何做呢

我参考了post并制作了一个小提琴,但它并没有按预期工作。

我会先将它展平(第一个控制台日志),除非您想要整个“外部”数组,在这种情况下,只需执行
。查找
两次:

var数据=[
[{
“Id”:“123”,
“名称”:“Abc”,
“金额”:110000
},
{
“Id”:“567”,
“名称”:“定义”,
“金额”:98000
},
{
“Id”:“345”,
“名称”:“XYZ”,
“金额”:145000
}
],
[{
“Id”:“656”,
“名称”:“Abc”,
“金额”:110000
},
{
“Id”:“223”,
“名称”:“定义”,
“金额”:98000
},
{
“Id”:“897”,
“名称”:“XYZ”,
“金额”:145000
}
]
];
var result=data.flat().filter(element=>element.Id==“223”);
控制台日志(结果);
console.log(data.find(el=>el.find(item=>item.Id==“223”))
我会先将它展平(第一个控制台日志),除非您想要整个“外部”数组,在这种情况下,只需执行两次
.find

var数据=[
[{
“Id”:“123”,
“名称”:“Abc”,
“金额”:110000
},
{
“Id”:“567”,
“名称”:“定义”,
“金额”:98000
},
{
“Id”:“345”,
“名称”:“XYZ”,
“金额”:145000
}
],
[{
“Id”:“656”,
“名称”:“Abc”,
“金额”:110000
},
{
“Id”:“223”,
“名称”:“定义”,
“金额”:98000
},
{
“Id”:“897”,
“名称”:“XYZ”,
“金额”:145000
}
]
];
var result=data.flat().filter(element=>element.Id==“223”);
控制台日志(结果);
console.log(data.find(el=>el.find(item=>item.Id==“223”))
您可以
.flat()
首先对
数据
数组执行一个简单的筛选,然后搜索所需的
Id
; 或者递归过滤数组,然后搜索所需的
Id
。 下面的代码片段演示了第二种方法

let result = data.map( array =>  
   array.filter( item => item.Id === "223" )
).flat();
var数据=
[{Id:'123',姓名:'Abc',金额:110000}
,{Id:'567',Name:'DEF',金额:98000}
,{Id:'345',名称:'XYZ',金额:145000}
] 
,[{Id:'656',姓名:'Abc',金额:110000}
,{Id:'223',Name:'DEF',金额:98000}
,{Id:'897',名称:'XYZ',金额:145000}
] ];
让result=data.map(array=>array.filter(item=>item.Id==“223”)).flat();
控制台日志(结果)
您可以
.flat()
首先对
数据
数组执行一个简单的筛选,然后搜索所需的
Id
; 或者递归过滤数组,然后搜索所需的
Id
。 下面的代码片段演示了第二种方法

let result = data.map( array =>  
   array.filter( item => item.Id === "223" )
).flat();
var数据=
[{Id:'123',姓名:'Abc',金额:110000}
,{Id:'567',Name:'DEF',金额:98000}
,{Id:'345',名称:'XYZ',金额:145000}
] 
,[{Id:'656',姓名:'Abc',金额:110000}
,{Id:'223',Name:'DEF',金额:98000}
,{Id:'897',名称:'XYZ',金额:145000}
] ];
让result=data.map(array=>array.filter(item=>item.Id==“223”)).flat();

控制台日志(结果)
Id
是唯一的吗?如果是,为什么不使用
find()
method?嵌套JSON?你是说一个包含对象的数组?@epascarello原始帖子是JSON
Id
唯一的吗?如果是,为什么不使用
find()
method?嵌套JSON?你是说一个包含对象的数组吗?@epascarello原来的帖子是JSON