I'm trying to deep filter until specific object with id found. I've taken these references,
- Recursively filter array of objects
- Filter items in array of objects
- Recursively filter array of objects with different properties
- Remove Object from Array using JavaScript
I am able to find the parent node, But was unable to delete specific children. What I'm doing wrong here?
Payload,
[
{
id: 1,
name: "Shrek",
lock: false,
checked: false,
selected: false,
layers: [],
},
{
id: 2,
name: "Fiona",
lock: false,
checked: false,
selected: false,
layers: [
{
id: 4,
name: "Lord Farquad",
lock: false,
checked: false,
selected: false,
layers: [
{
id: 5,
name: "Prince Charming",
lock: false,
checked: false,
selected: false,
layers: [],
},
],
},
],
},
{
id: 3,
name: "Donkey",
lock: false,
checked: false,
selected: false,
layers: [],
},
]
I'm getting Parent node with this code, but not sure from where to splice.
this.layers.filter(function f(o: any) {
if (o.id == 5) return true;
if (o.layers) return (o.layers = o.layers.filter(f)).length;
});
Expecting Output:
[
{
id: 1,
name: "Shrek",
lock: false,
checked: false,
selected: false,
layers: [],
},
{
id: 2,
name: "Fiona",
lock: false,
checked: false,
selected: false,
layers: [
{
id: 4,
name: "Lord Farquad",
lock: false,
checked: false,
selected: false,
layers: [],
},
],
},
{
id: 3,
name: "Donkey",
lock: false,
checked: false,
selected: false,
layers: [],
},
]