• js递归遍历树形json数据,根据关键字查找节点

    2020-05-27 7305阅读 0评论

    var nodes = [{id:1,name:1,children:[{id:4,name:4}]}]

    实现方式

    复制代码
    //递归实现
    //@leafId  查找的id,
    //@nodes   原始Json数据
    //@path    供递归使用
    function findPathByLeafId(leafId, nodes, path) {
      if(path === undefined) {
        path = [];
      }
      for(var i = 0; i < nodes.length; i++) {
          var tmpPath = path.concat();
          tmpPath.push(nodes[i].id);
          if(leafId == nodes[i].id) {
             return tmpPath;
          }
          if(nodes[i].children) {
            var findResult = findPathByLeafId(leafId, nodes[i].children, tmpPath);
            if(findResult) {
              return findResult;
            }
          }
      }
    }
    复制代码

    使用 

    console.log(findPathByLeafId(4, nodes))


    改造
    获取整个obj数据
    复制代码
    function findPathByLeafId(leafId, nodes, path){
        if(path === undefined) {
            path = {};
          }
          for(var i = 0; i < nodes.length; i++) {
              var tmpPath = path;
            //   tmpPath.push(nodes[i].id);
              if(leafId == nodes[i].id) {
                tmpPath=nodes[i];
                return tmpPath;
              }
              if(nodes[i].children) {
                var findResult = findPathByLeafId(leafId, nodes[i].children,  tmpPath);
                if(findResult) {
                  return findResult;
                }
              }
          }
    }
    复制代码

     

     

    原文:https://blog.csdn.net/m0_37727560/article/details/91607575

    posted @   webnote  阅读(7305)  评论(0)    收藏  举报
    我要评论

    编辑推荐:
    · dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
    · 如何统计不同电话号码的个数?—位图法
    · C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
    · 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
    · 记一次 .NET某旅行社酒店管理系统 卡死分析
    阅读排行:
    · 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析
    · 三维装箱问题(3D Bin Packing Problem, 3D-BPP)
    · Windows上,10分钟构建一个本地知识库
    · 使用 AOT 编译保护 .NET 核心逻辑,同时支持第三方扩展
    · Java虚拟机代码是如何一步一步变复杂且难以理解的?
    点击右上角即可分享
    微信分享提示