天天看点

将后端接口返回的-规则树状结构数据-转化为数组

啊,总有后端不能返回我们所需要的数据格式数据。那时候就需要我们自己遍历获取所需要的数据。

需要一点点的算法功底( 算法不行的me表示难受的很(ノω<。)ノ))☆.。 )

let organizationTreeList =

[

    {

        "organizationTreeList": [

            {

                "empName": "1哈哈",

            }

        ],

        "title": "领导啊",

        "empName": null,

    },

        "orgName": null,

        "organizationId": "",

        "parentId": "1",

                "title": "管理部分部",

                "organizationTreeList": [

                    {

                        "title": "管理部分分部",

                        "organizationTreeList": [

                            {

                                "organizationTreeList": [

                                    {

                                        "empName": "3哈哈",

                                    }

                                ]

                            }

                        ],

                    }

                ]

        "title": "管理部",

        "code": null,

    }]

        "title": "领导",

我们需要拿到其中所有的empName有值的数据。也就是各organizationList树中最下面的值。并将它放入一个数组。

方法:

    let arr = []

    function findItem(organizationTreeList) {

        if(organizationTreeList.length === 0) {

            return

        }

        organizationTreeList.map((v) => {

            if(v.organizationTreeList) {

                findItem(v.organizationTreeList)

            }else {

                arr.push(v)

        })

    }

    findItem(organizationTreeList)

    console.log(arr)

解释:这已经是个成熟的方法了,需要学会自己使用自己来完成目标(递归好吧也不知道是不是。。)

原理:方法开启,长度为0,那这树就是空,直接返回,如果其内还有值则进行遍历,如果这树还未到最底层,则再次调用本身,否则就给空数组增加进去此底层的值。

最终拿到所有底层的数据。

刚学算法没多久,暂时只想到这样拿取数据。这方法感觉就像深度优先遍历对象来深拷贝一样。有些迷糊的写了出来。(´・ω・`)?。有大佬辛苦优化就更好了。

继续阅读