有如下列表结构:
[
{
id: 1,
text: '节点 1',
parentId: 0 //这里用 0 表示为顶级节点
},
{
id: 2,
text: '节点 1_1',
parentId: 1 //通过这个字段来确定子父级
}
...
]
要求转化成如下树形结构:
[
{
id: 1,
text: '节点 1',
parentId: 0,
children: [
{
id:2,
text: '节点 1_1',
parentId:1
}
]
}
]
实现代码如下:
function listToTree(data) {
let temp = {};
let treeData = [];
for (let i = 0; i < data.length; i++) {
temp[data[i].id] = data[i];
}
for (let i in temp) {
if (+temp[i].parentId != 0) {
if (!temp[temp[i].parentId].children) {
temp[temp[i].parentId].children = [];
}
temp[temp[i].parentId].children.push(temp[i]);
} else {
treeData.push(temp[i]);
}
}
return treeData;
}
相信你能用到,拿走不谢!