js递归遍历多维数组并在修改数组的key后返回新的多维数组

我司最近正在用VUE做一个根据选中不同,登录的账号显示这个组织是可选或禁用:

js递归遍历多维数组并在修改数组的key后返回新的多维数组_第1张图片

js递归遍历多维数组并在修改数组的key后返回新的多维数组_第2张图片

{
    "code": 0,
    "data": [
        {
            "id": 3,
            "parentId": null,
            "organizationName": "智慧党建云",
            "isManager": 0,
            "subOrganizations": [
                {
                    "id": 36,
                    "parentId": 3,
                    "organizationName": "研发部",
                    "isManager": 0,
                    "subOrganizations": [
                        {
                            "id": 74,
                            "parentId": 36,
                            "organizationName": "重中之重",
                            "isManager": 0,
                            "subOrganizations": []
                        },
                        {
                            "id": 77,
                            "parentId": 36,
                            "organizationName": "重中之重啊",
                            "isManager": 0,
                            "subOrganizations": []
                        },
                        {
                            "id": 78,
                            "parentId": 36,
                            "organizationName": "啊啊啊啊",
                            "isManager": 0,
                            "subOrganizations": []
                        }
                    ]
                },
                {
                    "id": 37,
                    "parentId": 3,
                    "organizationName": "市委组织部测试",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 38,
                    "parentId": 3,
                    "organizationName": "保和乡测试",
                    "isManager": 0,
                    "subOrganizations": [
                        {
                            "id": 72,
                            "parentId": 38,
                            "organizationName": "小埠村支部",
                            "isManager": 0,
                            "subOrganizations": []
                        }
                    ]
                },
                {
                    "id": 47,
                    "parentId": 3,
                    "organizationName": "广电云测试",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 63,
                    "parentId": 3,
                    "organizationName": "嘉禾县测试",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 64,
                    "parentId": 3,
                    "organizationName": "移动测试",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 67,
                    "parentId": 3,
                    "organizationName": "高斯长沙",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 75,
                    "parentId": 3,
                    "organizationName": "成都测试",
                    "isManager": 0,
                    "subOrganizations": []
                },
                {
                    "id": 81,
                    "parentId": 3,
                    "organizationName": "测试编辑12",
                    "isManager": 0,
                    "subOrganizations": []
                }
            ]
        }
    ],
    "message": "ok",
    "error": null
}

js递归遍历多维数组并在修改数组的key后返回新的多维数组_第3张图片

this.formatRoutes(response.data);

let routers = this.formatRoutes(response.data);

this.treeData = routers;

formatRoutes(routerArr){

    const arr = [];

    let obj = {};

    routerArr.forEach(router => {

        const tmp = { ...router };

        if (tmp.subOrganizations) {

            tmp.isManager == 1 ? tmp.disabled = true : tmp.disabled = false;

            tmp.subOrganizations = this.formatRoutes(tmp.subOrganizations);

            obj = {

                parentId: tmp.parentId,

                organizationName: tmp.organizationName,

                subOrganizations: tmp.subOrganizations,

                isManager: tmp.isManager,

                id: tmp.id,

                disabled: tmp.disabled,

            }

        }

    arr.push(obj);

    })

    return arr;

},

输出的结果为:

js递归遍历多维数组并在修改数组的key后返回新的多维数组_第4张图片

你可能感兴趣的:(js,递归)