JavaScript 在嵌套的 js 对象上查找元素

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 对象,而不是返回嵌套的变量值。任何线索表示赞赏。


守着星空守着你
浏览 183回答 2
2回答

慕勒3428872

使用Array.reduce你可以提取 only 的数组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);

RISEBY

您可以使用名为d-forest 的库来查找深度嵌套的对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript