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: '部门6', pid: 0},
];
//方法一 (递归)
function arrayToTree(array,pid){
let result = []
array.forEach(item=>{
if(item.pid==pid){
item.children = arrayToTree(array,item.id)
result.push(item)
}
})
return result
}
let treeArray = arrayToTree(arr,0)
console.log(treeArray)
//方法二
function toTree(data) {
let result = []
let map = {};
data.forEach(item => {
map[item.id] = item;
});
console.log(map)
data.forEach(item => {
let parent = map[item.pid];
if(parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
console.log(toTree(arr))
js一维数组根据pid转为树形数据结构
最新推荐文章于 2023-09-02 11:41:43 发布