递归更改数组结果

时间:2017-11-14 16:10:48

标签: javascript lodash

我使用的API以包含额外节点的格式返回结果。我想以递归方式运行结果以删除“数据”节点,以便我可以在我的应用程序中使用它。

我可以使用普通的javascript或Lodash吗?

这是我得到的结果:

"pages": {
    "data": [
        {
            "id": 32,
            "pages": {
                "data": [
                    {
                        "id": 33,
                        "pages": {
                            "data": []
                        }
                    },
                    {
                        "id": 34,
                        "pages": {
                            "data": [
                                {
                                    "id": 35,
                                    "pages": {
                                        "data": []
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        },
        {
            "id": 36,
            "pages": {
                "data": []
            }
        }
    ]

这是我想要回复的内容:

"pages": [
        {
            "id": 32,
            "pages": [
                {
                    "id": 33,
                    "pages":  []
                },
                {
                    "id": 34,
                    "pages": [
                        {
                            "id": 35,
                            "pages": []
                        }
                    ]
                }
            ]
        },
        {
            "id": 36,
            "pages": []
        }
    ]

1 个答案:

答案 0 :(得分:2)

您可以对嵌套数组进行检查和递归方法。

function clean(object) {
    if (object.pages && object.pages.data) {
        object.pages = object.pages.data;
        delete object.pages.data;
    }
    object.pages.forEach(clean);
}


var object = { pages: { data: [{ id: 32, pages: { data: [{ id: 33, pages: { data: [] } }, { id: 34, pages: { data: [{ id: 35, pages: { data: [] } }] } }] } }, { id: 36, pages: { data: [] } }] } };

clean(object);

console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }