0
点赞
收藏
分享

微信扫一扫

数组转为树形结构以及树形结构平铺成数组

跟着Damon写代码 2022-03-30 阅读 215


var source = [
{
id: 1,
pid: 0,
name: 'body',
},
{
id: 5555,
pid: 0,
name: 'script',
},
{
id: 55551,
pid: 5555,
name: 'js',
},
{
id: 2,
pid: 1,
name: 'title',
},
{
id: 3,
pid: 1,
name: 'div',
},
{
id: 4,
pid: 3,
name: 'span',
},
{
id: 5,
pid: 3,
name: 'icon',
},
{
id: 6,
pid: 4,
name: 'subspan',
},
];

function toTree(data) {
let result = [];
if (!Array.isArray(data)) {
return result;
}
let 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 {
result.push(item);
}
});
return result;
}
console.log("树结构===", toTree(source));

let newTree = toTree(source);
var resultArr = [];
function flat(nodes, parentId) {
if (!nodes || nodes.length === 0) return [];
nodes.forEach((node) => {
resultArr.push({ ...node });
return flat(node.children, node.id);
});
}

flat(newTree, 0);
console.log("铺平===", resultArr)


举报

相关推荐

0 条评论