tree转数组,数组转tree - 前端笔记-/* * @Description: * @Author: 刘洋 * @Date: 2022-07-14 09:08:32 ...

学习笔记

点滴记忆
回忆过往
首页>> web前端 >>tree转数组,数组转tree - 前端笔记
/*
 * @Description:
 * @Author: 刘洋
 * @Date: 2022-07-14 09:08:32
 * @LastEditTime: 2022-07-24 12:48:05
 * @LastEditors: xxx
 */
let arr = [
    {name: "李四", id: 2, pid: 0},//  []
    {name: "王五", id: 3, pid: 0}, // [1,2]
    {name: "赵六", id: 4, pid: 3}, // []
    {name: "吗六", id: 1, pid: 3}, // []
    {name: "张三", id: 1, pid: 3}, // []
]

//  tree 转 数组
for (let i = 0; i < obj.length; i++) {
    console.log(obj[i])
    if(obj[i].child){
        obj = obj.concat(obj[i].child)
    }
}

// 递归
function arrayToTree(arr, pid) {
    if (!Array.isArray(arr) || !arr.length) return [];
    let res = []
    arr.forEach(item => {
        if (item.pid === pid) {
            let child = arrayToTree(arr, item.id);
            if (child.length) item.child = child
            res.push(item)
        }
    })
    return res
}

// obj 特性实现
function ArrAyToTreeMap(arr) {
    if (!Array.isArray(arr) || !arr.length) return;
    let map = {}
    arr.forEach(item => map[item.id] = item)

    let res = []
    arr.forEach(item => {
        let mapPid = map[item.pid]
        // console.log(mapPid, "mapPid")
        if (mapPid) {
            ((mapPid.child || (mapPid.child = [])).push(item))
        } else {
            res.push(item)
        }
    })
    return res;
}

console.log(arrayToTree(arr,0))
// console.log(ArrAyToTreeMap(arr))

×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » tree转数组,数组转tree

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)