JavaScript必会技巧---递归树结构

66 阅读1分钟

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))

image-20220812000717626.png