实现tree转为list
const treeToList = (tree, pId, res = [], level = 0) => {
tree.forEach(x => {
let { children, ...obj} = x;
obj.pId = pId || '';
obj.level = level;
res.push(obj)
if (children && children.length) treeToList(children, obj.id, res, level + 1);
})
return res;
}
实现list转为tree数据
const listToTree = (list) => {
const tree = [];
list.forEach(x => {
if (!x.pId) {
let obj = { ...x };
obj.children = getChildren(obj.id, list);
tree.push(obj)
}
})
function getChildren(pId, list) {
const children = list.filter(x => x.pId === pId);
children.map(x => {
x.children = getChildren(x.id, list)
})
return children;
}
return tree;
}