Struggling to figure this out. What is the cleanest code to extract all paths from a multi-dimentional array?
Below is my data.
const Pages = [
{
path: ['home'],
},
{
path: [''],
subpages: [
{
path: ['about', 'congleton'],
subpages: [
{
path: [ 'about', 'congleton', 'opening' ]
}
]
}
]
}
]
And this is the expected outcome:
[ ['home'], [''], ['about', 'congleton'], [ 'about', 'congleton', 'opening' ] ]
This is what I have right now, however i'm getting 'home', '' rather than ['home'],[''].
I need to retain these first 2 arrays.
function Path(page) {
let paths = page.path;
if (page.subpages) {
paths = [paths, (page.subpages).reduce((curr, subpage) => [...Path(subpage)], [])];
}
return paths;
}
const paths = Pages.reduce((curr, page) => curr.concat(Path(page)), []).flat();
console.log(paths);