Reputation: 207
I am using an API which is returning results in a format that includes extra nodes. I want to recursively run through the results to remove the "data" nodes so that I can use it in my application.
Can I do this with plain javascript or Lodash?
This is the results that I am getting:
"pages": {
"data": [
{
"id": 32,
"pages": {
"data": [
{
"id": 33,
"pages": {
"data": []
}
},
{
"id": 34,
"pages": {
"data": [
{
"id": 35,
"pages": {
"data": []
}
}
]
}
}
]
}
},
{
"id": 36,
"pages": {
"data": []
}
}
]
This is what I would like to have returned:
"pages": [
{
"id": 32,
"pages": [
{
"id": 33,
"pages": []
},
{
"id": 34,
"pages": [
{
"id": 35,
"pages": []
}
]
}
]
},
{
"id": 36,
"pages": []
}
]
Upvotes: 4
Views: 64
Reputation: 386654
You could take a check and a recursive approach for nested arrays.
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; }
Upvotes: 2