1、列表转化为树结构(递归树形结构)
实际开发中,经常会遇到的业务需求中,后端传过来的是数组中包含许多“形式一样”的对象,但实际这些对象是由层级关系的(树结构)。因此前端需要经过处理,转化为树结构。
const list = [
{
id:1,
pid:0,
name:'中国'
},
{
id:2,
pid:1,
name:'北京'
},
{
id:3,
pid:1,
name:'深圳'
},
{
id:4,
pid:1,
name:'武汉'
},
{
id:5,
pid:1,
name:'西安'
},
{
id:6,
pid:2,
name:'朝阳'
},
{
id:7,
pid:2,
name:'海淀'
}
]
const trancListToTreeData = (data,rootVal)=>{
const res = [];
//遍历查找
data.forEach((item)=>{
if(item.pid == rootVal){ //找到了根--找根下面的数据
res.push(item);
const children = trancListToTreeData(data,item.id) //子节点
children.length &&(item.children = children)
}
})
return res;
}
//遍历树形的原则--有头,才知道从哪开始
//要找根
console.log(trancListToTreeData (list,0))