[英]JavaScript find element on nested js object
let object = [{
"ItemAID" : 1,
"ItemADesc" : [ {
"ItemBid" : 11,
"ItemBDesc" : [ {
"ItemCid" : 111,
"ItemCTitle" : "TitleC111",
}, {
"ItemCid" :112,
"ItemCTitle" : "TitleC112",
} ]
}]},
{
"ItemAID" : 2,
"ItemADesc" : [ {
"ItemBid" : 21,
"ItemBDesc" : [ {
"ItemCid" : 211,
"ItemCTitle" : "TitleC211",
}, {
"ItemCid" :212,
"ItemCTitle" : "TitleC212",
} ]
}]}]
console.log(X.find(A => A.ItemADesc.find(B => B.ItemBDesc.find(C=>C.ItemCid === 212)?.ItemCTitle)));
当 ItemCid 与 id 匹配时,我试图查找 ItemCTitle。 上面的代码整体返回 ItemAID:2 对象,而不是返回嵌套的变量值。 任何线索表示赞赏。
使用Array.reduce
您只能提取ItemC
的数组,并且可以轻松地在那里找到该项目。
let input = [{ "ItemAID" : 1, "ItemADesc" : [ { "ItemBid" : 11, "ItemBDesc" : [ { "ItemCid" : 111, "ItemCTitle" : "TitleC111", }, { "ItemCid" :112, "ItemCTitle" : "TitleC112", } ] }]}, { "ItemAID" : 2, "ItemADesc" : [ { "ItemBid" : 21, "ItemBDesc" : [ { "ItemCid" : 211, "ItemCTitle" : "TitleC211", }, { "ItemCid" :212, "ItemCTitle" : "TitleC212", } ] }]}]; const itemC = input.reduce((acc, cur) => { if (cur['ItemADesc'] && cur['ItemADesc'].length > 0) { cur['ItemADesc'].forEach(({ ItemBDesc }) => { if (ItemBDesc.length > 0) { acc.push(...ItemBDesc); } }); } return acc; }, []).find(({ ItemCid }) => ItemCid === 211); console.log(itemC.ItemCTitle);
您可以使用名为d-forest 的库来查找深度嵌套的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.