首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从父-子json数据中使用id搜索节点值

如何从父-子json数据中使用id搜索节点值
EN

Stack Overflow用户
提问于 2022-03-27 09:44:23
回答 1查看 231关注 0票数 -1

我有一个基于父子json的数据

代码语言:javascript
运行
复制
[
   {
      "_id":"624015bb69f627d1d3484b06",
      "name":"11111",
      "created":"2022-03-27T07:36:50.492Z",
      "children":[
         {
            "_id":"624015c369f627d1d3484b0b",
            "name":"222222",
            "created":"2022-03-27T07:36:50.492Z",
            "children":[
               
            ],
            "parent":"624015bb69f627d1d3484b06",
            "path":"624015bb69f627d1d3484b06,624015c369f627d1d3484b0b",
            "__v":0
         },
         {
            "_id":"624015d069f627d1d3484b10",
            "name":"333333",
            "created":"2022-03-27T07:36:50.492Z",
            "children":[
               {
                  "_id":"6240161269f627d1d3484b15",
                  "name":"444444",
                  "created":"2022-03-27T07:36:50.492Z",
                  "children":[
                     {
                        "_id":"624021be69f627d1d3484b1f",
                        "name":"5555555",
                        "created":"2022-03-27T07:36:50.492Z",
                        "children":[
                           {
                              "_id":"624021cc69f627d1d3484b24",
                              "name":"555551111",
                              "created":"2022-03-27T07:36:50.492Z",
                              "children":[
                                 
                              ],
                              "parent":"624021be69f627d1d3484b1f",
                              "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f,624021cc69f627d1d3484b24",
                              "__v":0
                           },
                           {
                              "_id":"624021d569f627d1d3484b29",
                              "name":"555552222",
                              "created":"2022-03-27T07:36:50.492Z",
                              "children":[
                                 
                              ],
                              "parent":"624021be69f627d1d3484b1f",
                              "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f,624021d569f627d1d3484b29",
                              "__v":0
                           },
                           {
                              "_id":"624021de69f627d1d3484b2e",
                              "name":"555553333",
                              "created":"2022-03-27T07:36:50.492Z",
                              "children":[
                                 
                              ],
                              "parent":"624021be69f627d1d3484b1f",
                              "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f,624021de69f627d1d3484b2e",
                              "__v":0
                           },
                           {
                              "_id":"624021eb69f627d1d3484b33",
                              "name":"555554444",
                              "created":"2022-03-27T07:36:50.492Z",
                              "children":[
                                 
                              ],
                              "parent":"624021be69f627d1d3484b1f",
                              "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f,624021eb69f627d1d3484b33",
                              "__v":0
                           },
                           {
                              "_id":"624021f469f627d1d3484b38",
                              "name":"555555555",
                              "created":"2022-03-27T07:36:50.492Z",
                              "children":[
                                 
                              ],
                              "parent":"624021be69f627d1d3484b1f",
                              "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f,624021f469f627d1d3484b38",
                              "__v":0
                           }
                        ],
                        "parent":"6240161269f627d1d3484b15",
                        "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15,624021be69f627d1d3484b1f",
                        "__v":0
                     }
                  ],
                  "parent":"624015d069f627d1d3484b10",
                  "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10,6240161269f627d1d3484b15",
                  "__v":0
               }
            ],
            "parent":"624015bb69f627d1d3484b06",
            "path":"624015bb69f627d1d3484b06,624015d069f627d1d3484b10",
            "__v":0
         }
      ],
      "parent":null,
      "path":"624015bb69f627d1d3484b06",
      "__v":0
   }
]

我想通过搜索它的_id值来搜索结束叶节点,例如,我想找到id为'624021f469f627d1d3484b38‘的叶节点,它应该输出名为'55555555’的整个节点值,

我尝试过以下方法。

代码语言:javascript
运行
复制
const find = (array, id) => {
    var result;
    array.some(o => result = o._id === id ? o : find(o.children || [], id));
    return result;
};


const findChildById = (arr, id) => {
  const result = arr.find(o => o._id === id)
  if (result) return result
  for (const cm of arr) {
    const result = cm.children.find(o => o._id === id)
    if (result) return result
  }
}

      let node = find( nodeData, '624021f469f627d1d3484b38');
      let node =  findChildById( nodeData, '624021f469f627d1d3484b38');

但这两种方法都输出未定义的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-27 14:01:18

代码语言:javascript
运行
复制
const findChildren = (arrElement, matchingID) => {
  if (arrElement._id === matchingID) {
    return arrElement;
  } else if (arrElement.children.length) {
    let children = null;
    arrElement.children.forEach(element => {
      children = findChildren(element, matchingID);
    });
    return children;
  }
  return null;
};

console.log(findChildren(arrayChildren[0], '624021f469f627d1d3484b38'));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71635243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档