==
const tree = {
name: 'leve1',
children: [
{ name: 'leaf12' },
{
name: 'lvev13',
children: [
{ name: 'leaf131' },
{
name: 'leaf132',
children: [{ name: 'leaf1323' }, { name: 'leaf1324' }]
}
]
}
]
};
const treeFn = (tree, path = '/', record = []) => {
if (!tree.children || tree.children.length === 0) {
record.push({
name: path + '/' + tree.name
});
} else {
for (const item of tree.children) {
treeFn(item, path + tree.name + '/', record);
}
}
return record;
};
结果
思路:递归需要一个变量记录路径,和数据
先确认递出条件,没有children 说明是叶子节点,用path 拼接 push数组
循环这个数组,递归每一项,并用path 记录当前的 tree.name