参考:https://www.cnblogs.com/loveshes/p/11877799.html
原表格结构
转换成这样的结构
代码:
arr2tree2(arr, root) {
var temp = {}
temp[root.id] = root
for (var i = 0; i < arr.length; i++) {
// 插入一个新节点,后面对该节点的修改都会同步到该节点的父节点上
temp[arr[i].id] = arr[i]
// 查找是否有子节点
var keys = Object.keys(temp)
for (var j = 0; j < keys.length; j++) {
if (temp[keys[j]].pid === arr[i].id) {
temp[arr[i].id].nodes ? '' : temp[arr[i].id].nodes = []
temp[arr[i].id].nodes.push(temp[keys[j]]) // 将该子节点挂到当前节点的node上
}
}
// 查找是否有父节点
if (temp[arr[i].pid]) {
temp[arr[i].pid].nodes ? '' : temp[arr[i].pid].nodes = []
temp[arr[i].pid].nodes.push(arr[i]) // 将当前节点挂到父节点的node上
}
}
return temp
}