在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡安全  HTML/ 一個有多級的json對象,刪除對象是空的鍵值,覺得可以用遞歸,怎么實現(xiàn)

一個有多級的json對象,刪除對象是空的鍵值,覺得可以用遞歸,怎么實現(xiàn)

let arrn=[
        {
            "MENU_URL": "serviceManage",
            "MENU_ID": "8619ca0b6fbc42649a27475e339d5d4a",
            "MENU_INFO": [
                {
                    "MENU_URL": "userInfo",
                    "MENU_ID": "104a580029c54e139210b7e87dca6d89",
                    "MENU_INFO": [],
                    "MENU_NAME": "用戶信息"
                }
            ],
            "MENU_NAME": "業(yè)務管理"
        },
        {
            "MENU_URL": "serviceManage/recordQuery",
            "MENU_ID": "d379e3f38cb3472ab18287034f32ef46",
            "MENU_INFO": [
                {
                    "MENU_URL": "dashboard",
                    "MENU_ID": "104a580029c54e139210b7e87dca6d89",
                    "MENU_INFO": [
                        {
                            "MENU_URL": "dashboard",
                            "MENU_ID": "104a580029c54e139210b7e87dca6d89",
                            "MENU_INFO": [],
                            "MENU_NAME": "監(jiān)控面板222"
                        }
                    ],
                    "MENU_NAME": "監(jiān)控面板111"
                },
                {
                    "MENU_URL": "dashboard",
                    "MENU_ID": "104a580029c54e139210b7e87dca6d89",
                    "MENU_INFO": [],
                    "MENU_NAME": "監(jiān)控面板333"
                }
            ],
            "MENU_NAME": "訂購信息查詢"
        }
    ]
    let tmparr=arrn.map(function (value) {
        if (value.MENU_INFO.length===0){
            delete value.MENU_INFO
        }else{
            value.MENU_INFO.map(function (val) {
                if (val.MENU_INFO.length===0){
                    delete val.MENU_INFO
                }
            })
        }
        return value
    })
    console.log(tmparr)
就是MENU_ID為空的時候,把這個key給刪除了,一級一級向下?,F(xiàn)在可以實現(xiàn)到第三級,總不能一直判斷下去吧,有多少級也不一定呢,有沒有高手指點指點
回答
編輯回答
乞許

把處理函數(shù)獨立出來

function exec(array) {
  array.forEach(item => {
    if (item.MENU_INFO.length === 0) {
      delete item.MENU_INFO
    } else {
      exec(item.MENU_INFO)
    }
  })
}

exec(arrn);

console.log(arrn)

怕改動源數(shù)據(jù)可提前cloneDeep一下 用map delete也會把源數(shù)據(jù)改了

2017年7月16日 21:27