zoukankan      html  css  js  c++  java
  • 递归生成树

    var data = [
    {id:1,title:'a',pid:0},
    {id:2,title:'a1',pid:1},
    {id:3,title:'a11',pid:2},
    {id:4,title:'a12',pid:2},
    {id:5,title:'a2',pid:1},
    {id:6,title:'a21',pid:5}
    ];
    function fn(data,pid){
         var result = [] , temp;
         for(var i in data){
              if(data[i].pid==pid){
                   result.push(data[i]);
                   temp = fn(data,data[i].id);
                   if(temp.length>0){
                           data[i].children=temp;
                    }
             }
        }
    return result;
    }

    1.定义函数体:

                这个函数体有返回值:result 每一次计算出来的结果

                有形参: data,pid 这个形参是关键因素,因为递归的形参

                对形参处理: 对形参进行计算,从而形成结果返回

                函数体回调: 将参数传进来 fn(ag1,ag2)

                for循环: 对每一个树进行递归           

               将结果赋值或者有一定的含义,

               判断if: 判断是否进行递归

    2.有停止回调的条件

  • 相关阅读:
    idea新建web项目
    wampserver的MySQL和本机MySQL冲突导致空密码登录报错
    while-else if
    格式化输出
    Zookeeper
    仿真手写Spring核心原理v1.0
    各设计模式总结与对比
    装饰者模式和观察者模式
    模板模式和适配器模式
    委派模式和策略模式
  • 原文地址:https://www.cnblogs.com/jay--zhang/p/6651208.html
Copyright © 2011-2022 走看看