FPM应用-多文件下载(ZIP下载)

第3章-15 统计一行文本的单词个数 (15 分)

  返回  

数组转树结构

2021/7/20 21:15:09 浏览:

具体实现

<script>
    let arr = [
        {
            id: "4",
            name: "wxj",
            pid: "2"
        },
        {
            id: "5",
            name: "wxj",
            pid: "2"
        },
        {
            id: "6",
            name: "wxj",
            pid: "5"
        },
        {
            id: "7",
            name: "wxj",
            pid: "3"
        },
        {
            id: "8",
            name: "wxj",
            pid: "3"
        },
        {
            id: "9",
            name: "wxj",
            pid: "8"
        },
        {
            id: "2",
            name: "wxj",
            pid: "1"
        },
        {
            id: "3",
            name: "wxj",
            pid: "1"
        }
    ]

    function transTree(data) {
    let result = []
    let map = {}
    if (!Array.isArray(data)) {
        return []
    }

    data.forEach(item => {//建立每个数组元素id和该对象的关系
        map[item.id] = item 
    })

    data.forEach(item => {
        let parent = map[item.pid] //找到data中每一项item的爸爸,可以理解为浅拷贝
        // console.log(parent)
        if (parent) {//说明元素有爸爸,把元素放在爸爸的children下面
            (parent.children || (parent.children = [])).push(item)  // 浅拷贝导致map结构也会改变
           
        } else {//说明元素没有爸爸,是根节点
            result.push(item) //虽然可能由于子节点还没有添加到根节点,就push进了result,但由于浅拷贝,后续的节点还是会添加到根节点,导致改变
        }
    })
    return result
}
console.log(transTree(arr))

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号