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)));
I am trying to Find ItemCTitle when ItemCid matches with id. Above code returns ItemAID:2 object as a whole, instead of returning nested variable value. Any leads is appreciated.
Using Array.reduce
you can extract the array of ItemC
only and can find the item there easily.
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 的库来查找深度嵌套的对象。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.