数组转树之递归
需求 : 需要将数组转化为树状结构
解决思路 : 利用递归
实现
- 根据要求,A.pid===B.id表示A是B的children
- 封装一个函数,利用filfter过滤出对应的数组
- 再对过滤后的每一项进行找有没有children,如果有就继续调用自己,如果没有就返回这个数组
<script>
const arr = [
{ 'id': '29', 'pid': '', 'name': '总裁办' },
{ 'id': '2c', 'pid': '', 'name': '财务部' },
{ 'id': '2d', 'pid': '2c', 'name': '财务核算部'},
{ 'id': '2f', 'pid': '2c', 'name': '薪资管理部'},
{ 'id': 'd2', 'pid': '', 'name': '技术部'},
{ 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部'}
]
function array2Tree(arr, pid) {
// 先找出第一级对象,
const tree = arr.filter(item => item.pid === pid)
// 再遍历每个对象再判断有没有children
tree.forEach(item => {
//如果有children就添加
item.children = array2Tree(arr,item.id)
})
return tree
}
console.log(array2Tree(arr,''))
</script>