原数组
const arr = [{id:4,pid:3},{id:1,pid:22},{id:3,pid:2},{id:2,pid:1}];
一. reduce + 递归
const arrayToTree = (arr, pid) => {
return arr.reduce((res, current) => {
if (current['pid'] === pid) {
current.children = arrayToTree(arr, current['id']);
return res.concat(current);
}
return res;
}, []);
};
二. forEach
function toTree(data) {
const res = [];
const map = {};
data.forEach((item) => {
map[item.id] = item
})
data.forEach((item) => {
let parent = map[item.pid];
if(parent) {
(parent.children || (parent.children = [])).push(item)
} else {
res.push(item)
}
})
return res
}
调用: arrayToTree(arr,22)
版权声明:本文为m0_45093055原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。