我正在使用一个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": []
}
]
解决方法:
您可以对嵌套数组进行检查和递归方法.
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; }