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

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

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

例子:

后端的res.data.data 是这种的时候~

let organizationTreeList =
[
    {
        "organizationTreeList": [
            {
                "empName": "1哈哈",
            }
        ],
        "title": "领导啊",
        "empName": null,
    },
    {
        "orgName": null,
        "organizationId": "",
        "parentId": "1",
        "organizationTreeList": [
            {
                "title": "管理部分部",
                "organizationTreeList": [
                    {
                        "title": "管理部分分部",
                        "organizationTreeList": [
                            {
                                "organizationTreeList": [
                                    {
                                        "empName": "3哈哈",
                                    }
                                ]
                            }
                        ],
                    }
                ]
            }
        ],
        "title": "管理部",
        "code": null,
    }]
[
    {
        "organizationTreeList": [
            {
                "empName": "1哈哈",
            }
        ],
        "title": "领导",
        "empName": null,
    },
    {
        "orgName": null,
        "organizationId": "",
        "parentId": "1",
        "organizationTreeList": [
            {
                "title": "管理部分部",
                "organizationTreeList": [
                    {
                        "title": "管理部分分部",
                        "organizationTreeList": [
                            {
                                "organizationTreeList": [
                                    {
                                        "empName": "3哈哈",
                                    }
                                ]
                            }
                        ],
                    }
                ]
            }
        ],
        "title": "管理部",
        "code": null,
    }]
我们需要拿到其中所有的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,那这树就是空,直接返回,如果其内还有值则进行遍历,如果这树还未到最底层,则再次调用本身,否则就给空数组增加进去此底层的值。
最终拿到所有底层的数据。
刚学算法没多久,暂时只想到这样拿取数据。这方法感觉就像深度优先遍历对象来深拷贝一样。有些迷糊的写了出来。(´・ω・`)?。有大佬辛苦优化就更好了。

 

posted @ 2021-08-24 16:36  灵活鲜鱼ψ(`∇´)ψ  阅读(266)  评论(0)    收藏  举报