使用javascript过滤嵌套js对象数组
我试图从嵌套的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的数据时 我不太清楚
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原始帖子是JSONId
唯一的吗?如果是,为什么不使用find()
method?嵌套JSON?你是说一个包含对象的数组吗?@epascarello原来的帖子是JSON