ddjs 递归构建一个树,标记叶子节点_js 递归一个树_Shiki2147的博客-CSDN博客
// 构建树的数据
let a = [{pid:0,name:'1',id:1},
{pid:0,name:'2',id:2},
{pid:0,name:'3',id:3},
{pid:1,name:'11',id:11},
{pid:1,name:'12',id:12},
{pid:12,name:'121',id:121},
{pid:2,name:'21',id:21},
{pid:21,name:'212',id:212},
{pid:212,name:'2122',id:2122}
]
// 建一个存储树的变量
let arr = []
// 构建树的方法 list是数据,arr是树变量,parentId是树顶端的id
function fn(list,arr,parentId){
list.forEach(item =>{
if (item.pid === parentId) {
var child = {
key: item.id,
value: item.id + '',
title: item.name,
children: []
}
fn(list, child.children, item.id)
// 这一句用来判断是否是叶子节点,并未叶子节点加上标记
if(child.children.length == 0){
child.level =0
}
// ----------------------------------------------
arr.push(child)
console.log(arr)
}
})
}
// 调用方法
fn(a,arr,0)
打印arr;