线性转树形
jsonToTree = (arr) => {
let map = {};
arr.forEach(v => {
map[v.id] = v;
});
let tree = [];
arr.forEach(item => {
const mapItem = map[item.pid];
if (mapItem) {
(mapItem.children || (mapItem.children = [])).push(item);
} else {
tree.push(item);
}
});
return tree;
}
jsonToTree([{id: 1, name: '1'},{id: 2, name: '2'},{id: 3, pid: 1, name: '1-3'},{id: 4, pid: 2, name: '2-4'}])
树形转线性
var arr = []
treeToJson = (tree,pid) => {
if (tree.length) {
tree.forEach((d,i)=>{
if(d.children && d.children.length){
treeToJson(d.children,d.id);
delete d.children
}
if(pid) d.pid = pid
arr.push({...d})
})
}
}
treeToJson([{id: 1,name: "1",children:[{id: 3, name: "1-3"},{id: 4, name: "1-5"}]},{id: 2,name: "2",children:[{id: 4, name: "2-4"}]}])