繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM