js 如何使用递归遍历 树形数据 插入数据

我们来做一个简单的dome 来理解如何利用递归来插入树形数据

首先我们需要一组这样的数据

var data = [{
      id: 1,
      name:"第一级数据"
      cl: [{
        id: 4,
        name:"第二级数据"
      }, {
        id: 5,
        name:"第二级数据"
      }, {
        id: 6,
        name:"第二级数据"
      }]
    },
    {
      id: 2,
      name:"第一级数据"
      cl: [{
        id: 7,
        name:"第二级数据"
      }, {
        id: 8,
        name:"第二级数据"
      }, {
        id: 9,
        name:"第二级数据"
        cl: []
      }]
    },
    {
      id: 3,
      name:"第一级数据"
      cl: [{
        id: 11,
        name:"第二级数据"
      }, {
        id: 12,
        name:"第二级数据"
      }, {
        id: 13,
        name:"第二级数据"
      }]
    },

  ]
这样一组数据 思考 利用递归的方法 在id为9的数据下的cl 添加一个对象
  • 注意点
  1. 我们考虑利用递归 就必须等有一个判断条件 中断 递归 不然容易出现死循环
  2. 我们在进如函数递归是 要注意第二次调用自身是 函数的参数要是数据的子数据

下面是代码案例

	var arry = [
    2 , 9
  ]	//获得第一个id2 跟第二级id9 做判断条件使用
 	var num = 0
 	function saveObj(data) { 
    for (var i = 0; i < data.length; i++) {
    //循环第一层数据 判断第一层对等的数据
      if (arry[num] == data[i].id) {
      //2 == 2
       		 num++;
       //num = 1
        if (num == arry.length) {
       //判断你的num 跟你id数组是否对等 对等就是找到了当前对象 然后插入数据
          var obj1 = {
            id: 14
          }
          data[i].cl.push(obj1)
          return;
        } else {
        //如果没有遍历到最后一个数组id 就调用自身 参数一定是子级
          saveObj(data[i].cl)
        }
      }
    }
  }

这样你就在对应id插入对象了 这是一个递归比较使用简单的方法 还可以使用递归来实现树形数据

上一篇:选择屏幕分割


下一篇:ABAP Help Document(12):5.数据对象创建