<html>
<head>
<title>扁平数据结构转Tree</title>
</head><body>
</body>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
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;
}
let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 2},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]console.log(arrayToTree(arr))
</script>
</html>
递归方法
let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 2},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
let returend=[]
function listtree(arr,returend,pid){
for (const item of arr) {
if(item.pid==pid){
let returnlist={...item,children:[]}
returend.push(returnlist)
listtree(arr,returend,item.id)
}
}}
listtree(arr,returend,"0")
console.log(returend)
版权声明:本文为CSDN博主「小小1992」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014645827/article/details/124384708