将js数组转化为树形结构
采用的是递归的方式,先找出树形结构的头头,然后递归的去寻找每一项的子元素,然后返回,代码如下:
var tree = function(list,parentID){
//定义一个用于递归查找子元素的函数
var child = function(pareID){
//先定义一个数组,用于存储所查到的子元素
var childs = []
//循环数组
for(let i = 0; i<list.length;i++) {
//如果数组其中一项的parentId等于传入的,说明这一项是传入的子元素,把他push进数组,然后重复递归自己找该项的子元素
if(list[i].parentId == pareID) {
list[i].children = child(list[i].id)
childs.push(list[i])
}
}
//最后将查到的所有子元素返回
return childs;
}
return child(parentID)
}
这是测试数据:
var list=[
{id:2,name:'部门B',parentId:0},
{id:3,name:'部门C',parentId:1},
{id:1,name:'部门A',parentId:2},
{id:4,name:'部门D',parentId:1},
{id:5,name:'部门E',parentId:2},
{id:6,name:'部门F',parentId:3},
{id:7,name:'部门G',parentId:2},
{id:8,name:'部门H',parentId:4}
]