let data = [
{
id: 900,
name: 'bar',
slug: 'julep-mask',
status: 'publish',
categories: [{
id: 43,
name: 'Beauty',
slug: 'beauty',
categories: [{
id: 777,
name: 'Beauty',
slug: 'asdfghjkl',
categories: [{
id: 999999,
name: 'Antony',
slug: 'Moss',
}]
}]
}]
},
{
id: 700,
name: 'foo',
slug: 'julep-mask',
status: 'publish',
categories: [{
id: 43,
name: 'Beauty',
slug: 'beauty',
categories: [{
id: 777,
name: 'Beauty',
slug: 'asdfghjkl',
categories: []
}]
}]
},
{
id: 999,
name: 'foobar',
slug: 'julep-mask',
status: 'publish',
categories: [{
id: 43,
name: 'Beauty',
slug: 'beauty',
categories: [{
id: 777,
name: 'Beauty',
slug: 'asdfghjkl',
categories: [{
id: 12345678,
name: 'Jo',
slug: 'Bloggs',
}]
}]
}]
},
{
id: 11111,
name: 'fib',
slug: 'julep-mask',
status: 'publish',
categories: [{
id: 43,
name: 'Beauty',
slug: 'beauty',
categories: [{
id: 777,
name: 'Beauty',
slug: 'asdfghjkl',
categories: []
}]
}]
}];
Given this example data array. I need to remove any object where the final categories array is empty. So I would expect to have an array which looks like this [{ id: 999 }, { id: 900 }] as a result.
I've tried the following, but this only get's me to the second categories key and wouldn't work for continuously nested data.
const populatedCategories = categories.map(category => {
const categories = category.categories.filter(cat => cat. categories);
if (categories.length) {
return {
...category,
categories
};
}
return null;
}
).filter(p => p);
enter code here
categoriesarrays has only one item. Can it have more than 1 category at any level? If yes, what should happen when one of the path has empty at the end the the other one doesn't