function list2Tree(list) {
let uni = new Map();
list.forEach(item => {
if (item.pid == 0) {
if (uni.has(item.id)) {
let node = uni.get(item.id)
let trimedObj = Object.assign(node, ObjThin(item))
uni.set(item.id, trimedObj)
} else {
let trimedObj = Object.assign({}, ObjThin(item), { 'children': [] })
uni.set(item.id, trimedObj)
}
} else {
if (uni.has(item.pid)) {
let parentNode = uni.get(item.pid)
parentNode.children.push(ObjThin(item))
uni.set(parentNode.id, parentNode);
} else {
let parentNode = {
"children": [ObjThin(item)]
}
uni.set(item.pid, parentNode)
}
}
})
let treeList = Array.from(uni).map(v => v[1])
return treeList
}
let arr = [
{ id: 1, name: '部门1', pid: 0 },
{ id: 2, name: '部门2', pid: 1 },
{ id: 3, name: '部门3', pid: 1 },
{ id: 4, name: '部门4', pid: 3 },
{ id: 5, name: '部门5', pid: 4 },
{ id: 6, name: '部门1-3-4-5', pid: 5 },
]
let arr2 = arr.reverse()
function toTree(arr){
let result = []
let map = {};
arr.forEach(item=>{
let id = item.id
let pid = item.pid
if(!map[id]){
map[id] = {children:[]}
}
map[id] = {
...item,
children: map[id].children
}
let treeItem = map[id];
if(pid==0){
result.push(treeItem)
} else {
if(!map[pid]){
map[pid] = {
children:[]
}
}
item[pid].children.push(treeItem)
}
})
return result
}
function arrayToTree(items) {
const result = [];
const itemMap = {};
for (const item of items) {
const id = item.id;
const pid = item.pid;
if (!itemMap[id]) {
itemMap[id] = {
children: [],
}
}
itemMap[id] = {
...item,
children: itemMap[id]['children']
}
const treeItem = itemMap[id];
if (pid === 0) {
result.push(treeItem);
} else {
if (!itemMap[pid]) {
itemMap[pid] = {
children: [],
}
}
itemMap[pid].children.push(treeItem)
}
}
return result;
}
console.log(arrayToTree(arr))
function arrayToTree0320(arr){
let result = [];
let map = {};
arr.forEach(item=>{
let id = item.id;
let pid = item.pid;
if(!map[id]){
map[id] = {
children:[]
};
}
map[id] = {
...item,
children: map[id].children
};
let treeNode = map[id];
if(pid===0){
result.push(treeNode)
} else {
if(!map[pid]){
map[pid] = {
children:[]
}
}
map[pid].children.push(treeNode)
}
})
return result
}
console.log(_.eq(arrayToTree(arr),arrayToTree0320(arr)))
console.log('iso',_.isObject(new String('')))
console.log(_.isEmpty(''))
console.log(_.isEmpty(undefined))
console.log(_.isEmpty(null))
console