首页 > 编程语言 > 详细

数组转树

时间:2020-07-23 22:02:50      阅读:50      评论:0      收藏:0      [点我收藏+]
let input =  [{
    id: 1, val: ‘学校‘,  parentId: null
},{
    id: 2, val: ‘班级1‘, parentId: 1
},{
    id: 3, val: ‘班级2‘, parentId: 1
},{
    id: 4, val: ‘学生1‘, parentId: 2
},{
    id: 5, val: ‘学生2‘, parentId: 3
},{
    id: 6, val: ‘学生3‘, parentId: 3
}]

let output = {
    id: 1,
    val: ‘学校‘,
    children: [{
        id: 2,
        val: ‘班级1‘,
        children: [
            {
                id: 4,
                val: ‘学生1‘,
                children: []
            }
        ]
    }, {
        id: 3,
        val: ‘班级2‘,
        children: [
            {
                id: 5,
                val: ‘学生2‘,
                children: []
            },{
                id: 6,
                val: ‘学生3‘,
                children: []
            }
        ]
    }]
}

function arrToTree(arr){
    let output = {}
    for(let i = 0;i < arr.length;i++){
        let item = arr[i]
        if(item.parentId == null){
            output.id = item.id
            output.val = item.val
            output.children = toTree(output.id,arr)
        }
    }
    return output
}

function toTree(id,arr){
    let children = []
    for(let i = 0;i < arr.length;i++){
        let item = arr[i]
        if(id == item.parentId){
            children.push({
                id:item.id,
                val:item.val,
                children:toTree(item.id,arr)
            })
        }
    } 
    return children
}

  

数组转树

原文:https://www.cnblogs.com/zhenjianyu/p/13367164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!