数组集合通过id和parentId转换成树形结构

 const _data = [
        {
            "deptId": 100,
            "parentId": 0,
            "parentName": null,
            "ancestors": "0",
            "deptName": "晋商银行总行",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": "15888888888",
            "belongCity": null,
            "belongCityCode": null,
            "email": "",
            "status": "0",
            "createTime": "2024-01-08 08:16:52"
        },
        {
            "deptId": 101,
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "太原并州支行",
            "orderNum": 1,
            "leader": null,
            "leaderName": null,
            "phone": "",
            "belongCity": null,
            "belongCityCode": null,
            "email": "",
            "status": "0",
            "createTime": "2024-01-08 08:16:52"
        },
        {
            "deptId": 102,
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "太原晋阳支行",
            "orderNum": 2,
            "leader": null,
            "leaderName": null,
            "phone": "",
            "belongCity": null,
            "belongCityCode": null,
            "email": "",
            "status": "0",
            "createTime": "2024-01-08 08:16:52"
        },
        {
            "deptId": "1782248996188536834",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "陕西地区",
            "orderNum": 3,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-04-22 11:24:08"
        },
        {
            "deptId": "1782249078224928769",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "贵州地区",
            "orderNum": 4,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-04-22 11:24:27"
        },
        {
            "deptId": "1793098108642652161",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "广州地区",
            "orderNum": 6,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 09:54:38"
        },
        {
            "deptId": "1793097948537679874",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "深圳地区",
            "orderNum": 7,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 09:54:00"
        },
        {
            "deptId": "1793101200436097025",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "福建地区",
            "orderNum": 8,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:06:55"
        },
        {
            "deptId": "1793101348776046594",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "上海地区",
            "orderNum": 9,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:07:30"
        },
        {
            "deptId": "1793101446578827265",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "福州地区",
            "orderNum": 11,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:07:54"
        },
        {
            "deptId": "1793101590699307009",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "香港地区",
            "orderNum": 12,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:08:28"
        },
        {
            "deptId": "1793101644411564033",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "澳门地区",
            "orderNum": 13,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:08:41"
        },
        {
            "deptId": "1793101688602750978",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "昆明地区",
            "orderNum": 14,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:08:51"
        },
        {
            "deptId": "1793101749676011521",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "西藏地区",
            "orderNum": 15,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:09:06"
        },
        {
            "deptId": "1793101796115345410",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "乌鲁木齐地区",
            "orderNum": 16,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:09:17"
        },
        {
            "deptId": "1793101894266253313",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "浙江杭州",
            "orderNum": 16,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:09:40"
        },
        {
            "deptId": "1793101944111362050",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "苏州地区",
            "orderNum": 17,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:09:52"
        },
        {
            "deptId": "1793101994883411970",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "昆山地区",
            "orderNum": 18,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:10:04"
        },
        {
            "deptId": "1793102033680723969",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "新加坡",
            "orderNum": 19,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:10:14"
        },
        {
            "deptId": "1792831609401196546",
            "parentId": 100,
            "parentName": null,
            "ancestors": "0,100",
            "deptName": "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十",
            "orderNum": 1234567901,
            "leader": null,
            "leaderName": null,
            "phone": "13812345678",
            "belongCity": null,
            "belongCityCode": null,
            "email": "13812345678@qq.com.cn",
            "status": "1",
            "createTime": "2024-05-21 16:15:40"
        },
        {
            "deptId": "1796436328731189250",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "营业部门",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 14:59:32"
        },
        {
            "deptId": 103,
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "总行",
            "orderNum": 1,
            "leader": 1,
            "leaderName": null,
            "phone": "",
            "belongCity": null,
            "belongCityCode": null,
            "email": "",
            "status": "0",
            "createTime": "2024-01-08 08:16:53"
        },
        {
            "deptId": "1795327719270150145",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "A部门",
            "orderNum": 2,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-28 13:34:19"
        },
        {
            "deptId": "1795327775939391489",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "B部门",
            "orderNum": 3,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-28 13:34:32"
        },
        {
            "deptId": "1796435896919203841",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "策划部门",
            "orderNum": 5,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 14:57:49"
        },
        {
            "deptId": "1796436836413939714",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "财务部门",
            "orderNum": 6,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 15:01:33"
        },
        {
            "deptId": "1796437341559136257",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "对公业务部",
            "orderNum": 7,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 15:03:33"
        },
        {
            "deptId": "1793174890632835073",
            "parentId": 101,
            "parentName": null,
            "ancestors": "0,100,101",
            "deptName": "销售部门",
            "orderNum": 20,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 14:59:44"
        },
        {
            "deptId": 108,
            "parentId": 102,
            "parentName": null,
            "ancestors": "0,100,102",
            "deptName": "市场部门",
            "orderNum": 1,
            "leader": null,
            "leaderName": null,
            "phone": "15888888888",
            "belongCity": null,
            "belongCityCode": null,
            "email": "xxx@qq.com",
            "status": "0",
            "createTime": "2024-01-08 08:16:57"
        },
        {
            "deptId": 109,
            "parentId": 102,
            "parentName": null,
            "ancestors": "0,100,102",
            "deptName": "财务部门",
            "orderNum": 2,
            "leader": null,
            "leaderName": null,
            "phone": "15888888888",
            "belongCity": null,
            "belongCityCode": null,
            "email": "xxx@qq.com",
            "status": "0",
            "createTime": "2024-01-08 08:16:58"
        },
        {
            "deptId": "1793102623315980289",
            "parentId": "1793101200436097025",
            "parentName": null,
            "ancestors": "0,100,1793101200436097025",
            "deptName": "厦门地区",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:12:34"
        },
        {
            "deptId": "1793102663392555009",
            "parentId": "1793101200436097025",
            "parentName": null,
            "ancestors": "0,100,1793101200436097025",
            "deptName": "福州地区",
            "orderNum": 1,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:12:44"
        },
        {
            "deptId": "1793102700713472002",
            "parentId": "1793101200436097025",
            "parentName": null,
            "ancestors": "0,100,1793101200436097025",
            "deptName": "南平地区",
            "orderNum": 2,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:12:53"
        },
        {
            "deptId": "1793102746880176130",
            "parentId": "1793101200436097025",
            "parentName": null,
            "ancestors": "0,100,1793101200436097025",
            "deptName": "泉州地区",
            "orderNum": 3,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-22 10:13:04"
        },
        {
            "deptId": "1796433575975919618",
            "parentId": "1793174890632835073",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073",
            "deptName": "子子目录",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 14:48:35"
        },
        {
            "deptId": "1796433635782500354",
            "parentId": "1796433575975919618",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073,1796433575975919618",
            "deptName": "子子子目录",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 14:48:50"
        },
        {
            "deptId": "1796433699783385090",
            "parentId": "1796433635782500354",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073,1796433575975919618,1796433635782500354",
            "deptName": "子子子子目录",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "1",
            "createTime": "2024-05-31 14:49:05"
        },
        {
            "deptId": "1796437087560474626",
            "parentId": "1796433635782500354",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073,1796433575975919618,1796433635782500354",
            "deptName": "子子子子子目录",
            "orderNum": 0,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 15:02:33"
        },
        {
            "deptId": "1796437579753660417",
            "parentId": "1796433635782500354",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073,1796433575975919618,1796433635782500354",
            "deptName": "验证角色自动勾选",
            "orderNum": 1,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 15:04:30"
        },
        {
            "deptId": "1796464483168755713",
            "parentId": "1796433635782500354",
            "parentName": null,
            "ancestors": "0,100,101,1793174890632835073,1796433575975919618,1796433635782500354",
            "deptName": "未全选勾选",
            "orderNum": 3,
            "leader": null,
            "leaderName": null,
            "phone": null,
            "belongCity": null,
            "belongCityCode": null,
            "email": null,
            "status": "0",
            "createTime": "2024-05-31 16:51:24"
        }
        ]
    const tree = await toTree(_data)
        console.log('shux====',tree)
}

function toTree(arrays:any) {
            let result = [] as any[]
            //判断拿到的数据是否是数组,如果值是Array,则为true; 否则为false。
            if (!Array.isArray(arrays)) {
                return result
            }
            //深拷贝,否则会影响原数组
            let node = JSON.parse(JSON.stringify(arrays))
            //根据父节点进行拼接子节点,先判断里面是否有子节点,如果已经有的话,先删了
            node.forEach((item:any) => delete item.child)
            let map:any = {}
            let newNode = [] as any[]
            //把每一项的引用放入map对象里
            node.forEach((item:any) => map[item.deptId] = item)
            node.forEach((dt:any) => {
                let parents = map[dt.parentId] 
                if (parents) {
                    //如果 map[dt.pid] 有值 则 parents 为 dt 的父级
                    //判断 parents 里有无child 如果没有则创建 如果有则直接把 dt push到child里
                    ((parents.child) || (parents.child = [])).push(dt)
                    //等同于:
                    // if (!parents.child) {
                    //     parents.child = []
                    // }
                    // (parents.child).push(dt)
                } else {
                    newNode.push(dt)
                }
            })
            return newNode
        }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨疯行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值