我们来做一个简单的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 添加一个对象
- 注意点
- 我们考虑利用递归 就必须等有一个判断条件 中断 递归 不然容易出现死循环
- 我们在进如函数递归是 要注意第二次调用自身是 函数的参数要是数据的子数据
下面是代码案例
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)
}
}
}
}