I have following nested array, I need to delete fields object with id 47 and return the whole parent array. How this can be done in JS?
[{
"id": 10,
"name": "phone",
"fields": [
{
"id": 31,
"name": "cellphone",
"fields": [
{
"id": 47,
"name": "android"
}
]
},
{
"id": 32,
"name": "landline"
}
]
},
{
"id": 12,
"name": "document"
},
{
"id": 90,
"name": "document-name",
"fields": [
{
"id": 91,
"name": "new-name"
}
]
}]
I have tried following, but making mistake with the use of filter function.
private getUpdatedData(data, id, searchKey = 'fields') {
data.forEach(function(ele) {
if(ele.id === id && ele[searchKey]) {
ele = ele[searchKey].filter(s => s.id === id);
} else if(ele.id === id && !ele[searchKey]) {
data = data.filter(s => s.id === id)
} else if(ele[searchKey]){
this.getUpdatedData(ele[searchKey], id, searchKey);
}
}.bind(this));
return data;
}