人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統 > 硬件軟件教程 > 詳細頁面

js遞歸地遍歷多維數組并在更改數組鍵后返回新的多維數組

js遞歸地遍歷多維數組并在更改數組鍵后返回新的多維數組

更新時間:2023-06-23 文章作者:未知 信息來源:網絡 閱讀次數:

根據運行的環境,操作系統可以分為桌面操作系統,手機操作系統,服務器操作系統,嵌入式操作系統等。

js 多維數組遍歷_js遍歷多維數組_js 遞歸遍歷多維數組

我們公司目前正在使用VUE作為后臺管理系統,該系統根據用戶權限顯示不同的左菜單. 界面將根據用戶權限返回不同的菜單名稱和URL. 前端將動態添加這些菜單名稱和URL. 在系統左側,此處使用vue-router2.2添加的router.addRouter(routes)方法. 但是接口返回給我的只是鍵值對的普通數組js遍歷多維數組,而vue-router需要固定格式的路由js遍歷多維數組,因此我只能自己將普通數組轉換為路由. 具體代碼如下:

js遍歷多維數組_js 遞歸遍歷多維數組_js 多維數組遍歷

let json = [
            {
              "id": 64,
              "code": "565",
              "name": "共和國",
              "label": "共和國",
              "parentId": 0,
              "type": 2,
              "seq": 0,
              "url": "/public",
              "description": "同意",
              "children": []
            },
            {
              "id": 1,
              "code": "sys_mgnt",
              "name": "系統管理",
              "label": "系統管理",
              "parentId": 0,
              "type": 1,
              "url": "/system",
              "seq": 1,
              "description": "aaa",
              "children": [
                {
                  "id": 28,
                  "name": "測試二級菜單1",
                  "label": "測試二級菜單1",
                  "parentId": 1,
                  "type": 1,
                  "url": "/add",
                  "seq": 1,
                  "description": "測試二級菜單的描述",
                  "children": [
                      {
                        "id": 288,
                        "name": "三級菜單1",
                        "label": "三級菜單1",
                        "parentId": 11,
                        "type": 1,
                        "url": "/add1",
                        "seq": 1,
                        "description": "三級菜單1的描述",
                        "children": []
                      }                 
                  ]
                },
                {
                  "id": 30,
                  "name": "新增角色管理",
                  "label": "新增角色管理",
                  "parentId": 1,
                  "type": 2,
                  "seq": 1,
                  "description": "新增角色管理的描述",
                  "children": []
                },
                {
                  "id": 31,
                  "name": "add角色管理",
                  "label": "add角色管理",
                  "parentId": 1,
                  "type": 1,
                  "seq": 1,
                  "description": "add角色管理的描述",
                  "children": []
                },
                {
                  "id": 3,
                  "code": "ro_mgnt",
                  "name": "角色管理",
                  "label": "角色管理",
                  "parentId": 1,
                  "type": 1,
                  "url": "",
                  "seq": 2,
                  "children": [
                    {
                      "id": 32,
                      "name": "可以成功",
                      "label": "可以成功",
                      "parentId": 3,
                      "type": 2,
                      "url": "/ctrl",
                      "seq": 1,
                      "description": "能成功嗎的描述",
                      "children": []
                    }
                  ]
                }
              ]
            }
          ]
        let routerArr = JSON.parse(JSON.stringify(json));
        function formatRoutes(routerArr){
            const arr = [];
            let obj = {};           
            routerArr.forEach(router => {       
                const tmp = { ...router };
                if(tmp.type == 1){  //只篩選出type=1的項
                    if (tmp.children) {
                        tmp.children = formatRoutes(tmp.children);
                        const {url, children, type} = router;
                        obj = {
                            path: tmp.url,
                            name: tmp.name,
                            meta: {title: tmp.name},
                            children: tmp.children
                        }                       
                    }
                    arr.push(obj);
                }
            })
            return arr;
        }
        let routers = formatRoutes(routerArr);
        console.log(routers);

js 多維數組遍歷_js 遞歸遍歷多維數組_js遍歷多維數組

輸出為:

js 遞歸遍歷多維數組_js 多維數組遍歷_js遍歷多維數組

688074-20181031133228446-1298838168.jpg

js 多維數組遍歷_js遍歷多維數組_js 遞歸遍歷多維數組

顯然,這已經符合基本的路由方式,但是在每個路由配置中僅缺少一個組件,因此即使我們通過遞歸遍歷生成了所需的數組,數組也返回給了我們,但仍然無法滿足前端的配置要求,個人建議接口返回固定的路由配置格式,返回的路由應該是已經預先配置好的前端,否則我們組件的路徑是什么?否則,我們要跳轉到哪里?但這不是本文的重點!

js遞歸地遍歷多維數組,并在修改數組鍵后返回新的多維數組DEMO(返回的結果可以在瀏覽器控制臺中查看)


本文來自本站,轉載請注明本文網址:
http://www.pc-fly.com/a/jisuanjixue/article-253006-1.html



溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 石家庄市| 西乡县| 灵山县| 云龙县| 邹平县| 京山县| 顺昌县| 松潘县| 南部县| 北京市| 焉耆| 岐山县| 洪泽县| 清水县| 青浦区| 会东县| 维西| 汾阳市| 屏山县| 囊谦县| 伊金霍洛旗| 方山县| 云和县| 华蓥市| 淮滨县| 凤阳县| 钟山县| 若尔盖县| 宜良县| 稻城县| 荥阳市| 高要市| 平舆县| 德兴市| 木兰县| 华蓥市| 阿巴嘎旗| 浑源县| 红河县| 长春市| 饶平县|