扁平数组转tree

(function init() {

        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

            },

        ]

        const newArr = arr.reduce((total, item,index, list) => {

            if (item.pid === 0) {

                total.push({

                    ...item,

                    children: list.filter(f => f.pid === item.id)

                })

            } else {

                item.children = list.filter(f => f.pid === item.id)

            }

            return total

        }, [])

        console.log(newArr)

    })()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容