I have an object that contains the following data. How can I get all the data in the title key using the recursive function? I want a function return a array include a, b, c, d, e, f
{
children: [
{
children: [
{
children: [],
title: "a"
}
],
title: "b"
},
{
children: [
{
children: [],
title: "c"
},
{
children: [],
title: "d"
}
],
title: "e"
}
],
title: "f"
}
CodePudding user response:
Following a solution using modern syntax. extractTitles
recursively produces arrays of titles as long as there are children and reduces them to a single array.
const extractTitles = (arr) =>
arr.reduce((prev, { children, title }) => [...prev, title, ...(children.length ? extractTitles(children) : [])], []);
extractTitles(tree);
Or you can use flatmap
.
const extractTitles = ({ title, children = [] }) =>
[title, ...children.flatMap(extractTitles)];
extractTitles(tree);
// ["f","b","a","e","c","d"]
CodePudding user response:
You can do something like this:
function drill(t, n) {
if (n.length > 0) {
for (let elem of n) {
t.push(elem.title);
drill(t, elem.children)
}
}
return t
}
As @rickhg12hs did here