function collectLabels(data) {
let labels = [];
// 定义一个递归函数来遍历每个节点
function traverse(nodes) {
nodes.forEach(node => {
// 添加当前节点的label到数组中
labels.push(node.label);
// 如果节点有children,则递归遍历它们
if (node.children && node.children.length > 0) {
traverse(node.children);
}
});
}
// 开始遍历
traverse(data);
// 返回收集到的labels数组
return labels;
}
// 示例数据
const data = [
{
id: 1,
label: '一级 1',
children: [
{
id: 4,
label: '二级 1-1',
children: [
{
id: 9,
label: '三级 1-1-1'
},
{
id: 10,
label: '三级 1-1-2'
}
]
}
]
},
{
id: 2,
label: '一级 2',
children: [
{
id: 5,
label: '二级 2-1'
},
{
id: 6,
label: '二级 2-2'
}
]
},
{
id: 3,
label: '一级 3',
children: [
{
id: 7,
label: '二级 3-1'
},
{
id: 8,
label: '二级 3-2'
}
]
}
];
// 调用函数并打印结果
console.log(collectLabels(data));
运行结果