如何将一个数组对象的children转成一维数组?

[{
    "opentarget": "",
    "children": [{
        "opentarget": "",
        "smallicon": "Menu",
        "label": "页面装修",
        "id": "a011cd42-8eeb-41bd-ae26-e91f327d647e",
        "url": "/views/entity/list?entityname=app_page"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "功能列表",
        "id": "2f3d3107-1856-452f-8aee-25f2c8561888",
        "url": "/views/entity/list?queryviewid=dd879dca-4626-4aa7-97c1-6a102b4edff4"
    }],
    "smallicon": "Finished",
    "label": "小程序管理",
    "id": "2aa3ea3c-cd53-4ba7-925a-0eeb936e250c",
    "url": ""
}, {
    "opentarget": "",
    "children": [{
        "opentarget": "",
        "smallicon": "List",
        "label": "企业列表",
        "id": "584d2162-34b6-4216-8cf4-c72a3c5e7092",
        "url": "/views/entity/list?queryviewid=2410d072-19cf-4cd6-8fbc-2382ac5f6875"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "服务分类",
        "id": "126e0bed-17ac-4344-83dd-61f0dd028aba",
        "url": "/views//entity/list?queryviewid=7d84a50a-2a3f-4463-9033-ffdf3afa922e"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "进驻分类",
        "id": "7227f1f0-a970-4282-b7eb-65c97ed94efa",
        "url": "/views/entity/list?queryviewid=c4dd2ac1-4b5d-4fd3-8027-7f5f1bcb960a"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "企业服务",
        "id": "c4fac47d-f1ce-41d7-bbdd-d4adc7af1d21",
        "url": "/views/entity/list?queryviewid=3baf5e54-25c5-4a7f-b5a2-72756114bc3f"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "企业进驻",
        "id": "260062b4-7784-47e2-9e31-83d7768daffa",
        "url": "/views/entity/list?queryviewid=4cadc5d6-785d-416a-9f2b-b5d09f8590ce"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "企业社团",
        "id": "e3a7b696-e1b2-4fe3-ab49-ab013afa1a74",
        "url": "/views/entity/list?queryviewid=88c30817-3043-4390-8dd6-98a5f2e7a7cc"
    }],
    "smallicon": "DataLine",
    "label": "企业管理",
    "id": "b7f0e154-27ed-44e7-941b-8ed6372c2658",
    "url": ""
}, {
    "opentarget": "",
    "children": [{
        "opentarget": "",
        "smallicon": "Menu",
        "label": "商品分类",
        "id": "9b6718bb-2541-468c-a2c2-5428dc133734",
        "url": "/views/entity/list?queryviewid=3278a273-20a9-4007-af66-1b39f2e13d30"
    }, {
        "opentarget": "",
        "smallicon": "Menu",
        "label": "商品列表",
        "id": "c8f219b7-540a-4a6a-aa5b-3a1b5eaaa4bc",
        "url": "/views//entity/list?queryviewid=0e83a0fa-be13-4d15-8168-2c7c6ff2ff4c"
    }],
    "smallicon": "Menu",
    "label": "商品管理",
    "id": "bba49ee3-e97e-4e49-92f6-e8d2530c40ea",
    "url": ""
}]

我想把这个数组里面的children,和最外层的数组合并成一个一维数组,可能children里面对象数组还包含有children 怎么实现呢?

阅读 4.3k
3 个回答

let newArr = arr.flatMap(v => v.children)

var flatArray = arr => arr.reduce((res,v) => res.concat(v, flatArray(v.children||[])), [])

首先,如果children底下还会有children的话,需要一个思路,做递归。没有的话,直接flat就好了。

function (target){
    let result = []
    function flatChild(target){
        if(Array.IsArray(target))
            target.forEach(flatChild)
        else
            result.push(target.children)
    }
    return result
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题