首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用子数组展平数组

用子数组展平数组
EN

Stack Overflow用户
提问于 2020-10-09 02:26:15
回答 1查看 52关注 0票数 1

我有一个数组,如下所示

代码语言:javascript
复制
[
{
    "entity": {
        "id": "2387232d-5fc4-4344-b71b-42f70ff16040",
        "pid": "bdba6327-4055-42db-8f2e-34c595a6f79f",
        "name": "Outsourcing Lead",
        "title": "OL"
    },
    "childNodes": [
        {
            "entity": {
                "id": "91444f59-1b70-4817-a9a5-8e9b85a9799a",
                "pid": "2387232d-5fc4-4344-b71b-42f70ff16040",
                "name": "Corporate Accountant",
                "title": "CA"
            },
            "childNodes": [],
            "depth": 2,
            "parent": {
                "id": "2387232d-5fc4-4344-b71b-42f70ff16040",
                "pid": "bdba6327-4055-42db-8f2e-34c595a6f79f",
                "name": "Outsourcing Lead",
                "title": "OL"
            }
        },
        {
            "entity": {
                "id": "4454e911-d1dc-494d-b243-e3237b9971d7",
                "pid": "2387232d-5fc4-4344-b71b-42f70ff16040",
                "name": "Liaison Officer / Messenger",
                "title": "LO"
            },
            "childNodes": [
                {
                    "entity": {
                        "id": "893b5911-eb46-4bb3-a3eb-ac375f959202",
                        "pid": "4454e911-d1dc-494d-b243-e3237b9971d7",
                        "name": "System Administrator",
                        "title": "SYSAD"
                    },
                    "childNodes": [],
                    "depth": 3,
                    "parent": {
                        "id": "4454e911-d1dc-494d-b243-e3237b9971d7",
                        "pid": "2387232d-5fc4-4344-b71b-42f70ff16040",
                        "name": "Liaison Officer / Messenger",
                        "title": "LO"
                    }
                }
            ],
            "depth": 2,
            "parent": {
                "id": "2387232d-5fc4-4344-b71b-42f70ff16040",
                "pid": "bdba6327-4055-42db-8f2e-34c595a6f79f",
                "name": "Outsourcing Lead",
                "title": "OL"
            }
        }
    ],
    "depth": 1,
    "parent": null
}]

但是,我想要一个如下所示的结果。

代码语言:javascript
复制
[
{
    "id": "2387232d-5fc4-4344-b71b-42f70ff16040",
    "pid": "bdba6327-4055-42db-8f2e-34c595a6f79f",
    "name": "Outsourcing Lead",
    "title": "OL"
},
{
    "id": "2387232d-5fc4-4344-b71b-42f70ff16040",
    "pid": "bdba6327-4055-42db-8f2e-34c595a6f79f",
    "name": "Outsourcing Lead",
    "title": "OL"
},
{
     "id": "893b5911-eb46-4bb3-a3eb-ac375f959202",
     "pid": "4454e911-d1dc-494d-b243-e3237b9971d7",
     "name": "System Administrator",
     "title": "SYSAD"
}]

我已经在这个帖子上搜索并尝试了答案。

Merge/flatten an array of arrays

Flatten a jagged multi dimensional array

代码语言:javascript
复制
var flattened = [].concat.apply([], data);

"data“变量是我的数组。但它不起作用。

感谢任何人的帮助。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 02:33:52

您可以采用迭代和递归方法,并使用Array#flatMap返回平面数组。

这种方法只接受entity对象。

代码语言:javascript
复制
const
    getFlat = ({ entity, childNodes }) => [entity, ...childNodes.flatMap(getFlat)],
    array = [{ entity: { id: "2387232d-5fc4-4344-b71b-42f70ff16040", pid: "bdba6327-4055-42db-8f2e-34c595a6f79f", name: "Outsourcing Lead", title: "OL" }, childNodes: [{ entity: { id: "91444f59-1b70-4817-a9a5-8e9b85a9799a", pid: "2387232d-5fc4-4344-b71b-42f70ff16040", name: "Corporate Accountant", title: "CA" }, childNodes: [], depth: 2, parent: { id: "2387232d-5fc4-4344-b71b-42f70ff16040", pid: "bdba6327-4055-42db-8f2e-34c595a6f79f", name: "Outsourcing Lead", title: "OL" } }, { entity: { id: "4454e911-d1dc-494d-b243-e3237b9971d7", pid: "2387232d-5fc4-4344-b71b-42f70ff16040", name: "Liaison Officer / Messenger", title: "LO" }, childNodes: [{ entity: { id: "893b5911-eb46-4bb3-a3eb-ac375f959202", pid: "4454e911-d1dc-494d-b243-e3237b9971d7", name: "System Administrator", title: "SYSAD" }, childNodes: [], depth: 3, parent: { id: "4454e911-d1dc-494d-b243-e3237b9971d7", pid: "2387232d-5fc4-4344-b71b-42f70ff16040", name: "Liaison Officer / Messenger", title: "LO" } }], depth: 2, parent: { id: "2387232d-5fc4-4344-b71b-42f70ff16040", pid: "bdba6327-4055-42db-8f2e-34c595a6f79f", name: "Outsourcing Lead", title: "OL" } }], depth: 1, parent: null }],
    flat = array.flatMap(getFlat);

console.log(flat);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64268569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档