树形转数组
思路: 一个数组把父节点和子节点都塞入一个一维数组中
const treeToArray = (tree) => {
let result = []
const merge = (tree, childName = "children") => {
result.push(tree)
tree[childName].forEach(item => merge(item, childName));
delete tree[childName]
}
merge(tree);
return result;
}
数组转树组件
思路:先将一位数组里的每个元素都找到子节点,最后忽略pid不为0的节点
最后剩下最顶层节点的数组了
const arrayToTree = (arr, childName = "children", idKey = "id", pidKey = "pid") => arr.filter(item => {
item[childName] = arr.filter(item2 => item2[pidKey] == item[idKey])
return item.pid == 0;
})