const projects = [
{
name: 'Project A',
modules: [
{
name: 'Core',
version: '1.0.0',
},
{
name: 'UI',
modules: [
{
name: 'Button',
version: '1.2.0',
},
{
name: 'Modal',
modules: [
{
name: 'Confirm',
version: '1.2.3',
},
],
},
],
},
],
},
{
name: 'Project B',
modules: [
{
name: 'Auth',
version: '2.0.0',
},
],
},
];
// 输出:
[
{ project: 'Project A', module: 'Core', version: '1.0.0' },
{ project: 'Project A', module: 'Button', version: '1.2.0' },
{ project: 'Project A', module: 'Confirm', version: '1.2.3' },
{ project: 'Project B', module: 'Auth', version: '2.0.0' },
]
function treeTolist(tree) {
const res = []
const dfs = (node, root) => {
if (node.modules) {
res.push({ project: root.name, module: node.name, version: node.version })
node.modules.forEach((child) => dfs(child, root))
}
}
tree.forEach((item) => dfs(item, item))
return res
}
console.log(treeTolist(projects))
console