let namesMap;
/**
* @author: aa
* @description: 遍历树
* @param {*} arr
* @param {*} node
* @return {*}
*/
export const traverseTree = (arr, node) => {
arr.forEach((i) => {
if (i.name === node) {
namesMap = {
area: i.area,
site: i.site,
};
} else {
// eslint-disable-next-line no-unused-expressions
i.children && traverseTree(i.children, node);
}
});
return namesMap;
};
树结构转列表结构
//递归实现
function treeToList (tree, result = [], level = 0) {
tree.forEach(node => {
result.push(node)
node.level = level + 1
node.children && treeToList(node.children, result, level + 1)
})
return result
}
treeToList(tree, result = [], level = 0) {
tree.forEach((node) => {
result.push(node);
node.level = level + 1;
// eslint-disable-next-line no-unused-expressions
node.children && this.treeToList(node.children, result, level + 1);
});
return result;
},
const result = this.treeToList(this.treeData, [], 0); // 树状结构转列表
const next = result.filter((item) => item.parentName === this.selectNode);
const sourceTableData = [];
if (next.length > 0) {
next.forEach((i) => {
if (i.children) {
i.children.forEach((j) => {
if (j.children) {
j.children.forEach((m) => {
sourceTableData.push(...m.list);
});
} else {
sourceTableData.push(...j.list);
}
});
} else {
sourceTableData.push(...i.list);
}
});
this.tableData = this.getRev(sourceTableData);
} else {
const lastLevelNode = result.filter((item) => item.name === this.selectNode)[0].list;
this.tableData = this.getRev(lastLevelNode);
}