最近在写遍历tree的所有节点,虽然elementui tree组件提供了filter方法遍历所有节点,但是还是想自己找办法遍历下,首次使用递归,记录下:
数据定义
var docData = [{
id: 123,
label: 'a文档一',
modelId: '1012',
children: [{
id: 455,
label: 'a二级文档列表展示',
modelId: '9',
children: [{
id: 9,
label: 'a三级文档列表展示',
modelId: '1015',
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
},
{
id: 132,
label: 'b文档一',
modelId: '58',
children: [{
id: 555,
label: 'b二级文档列表展示',
modelId: '10',
children: [{
id: 91,
label: 'b三级文档列表展示',
modelId: '6',
}, {
id: 102,
label: 'b三级 1-1-2',
modelId: '1015',
}]
}]
}];
递归方法,遍历所有节点,生成新数组
var abc = [];
// 递归
function traverse (data) {
for (const key in data) {
var l = { id: data[key].id, label: data[key].label, modelId: data[key].modelId };
abc.push(l);
if (data[key].children) {
if (data[key].children.length > 0) {
traverse(data[key].children);
}
}
}
}
traverse(docData);
打印输出