SOURCE

let arr = [
    {id: 1, name: '部门1', pid: 0},
    {id: 2, name: '部门2', pid: 1},
    {id: 3, name: '部门3', pid: 1},
    {id: 4, name: '部门4', pid: 3},
    {id: 5, name: '部门5', pid: 4},
]

function  selectCourseHpoint(arr){
    var list = []; 
    arr.forEach(val => {
        this.isHpoint = 1
        for (let i = 0; i<arr.length; i++) {
            const val2 = arr[i]
            if(val.pid == val2.id) {
                this.isHpoint = -1
                break
            }           
        }
        if(this.isHpoint != -1){
            list.push(val)
        }
    })
    list.forEach(val =>{
        courseTree(val.pid,arr)
    })
    return list
}

function courseTree(pid,arr){
    var list = []
    arr.forEach(val=>{
        if(val.pid == pid){
            var children = courseTree(val.id, arr)
            if (children.length != 0) {
                val.children = children
            }
            list.push(val)
        }
    })
    return list
}

let arr1 = selectCourseHpoint(arr)
console.log(arr1)
console 命令行工具 X clear

                    
>
console