js 把平行数据转成树形结构
要将平行数据转换为树形结构,可以使用递归的方式进行处理。下面是一个示例的 JavaScript 代码:
function buildTree(data, parentId) {
var tree = [];
for (var i = 0; i < data.length; i++) {
if (data[i].parentId === parentId) {
var node = {
id: data[i].id,
name: data[i].name,
children: buildTree(data, data[i].id)
};
tree.push(node);
}
}
return tree;
}
上面的代码中,data 是一个包含平行数据的数组,每个元素都有一个 parentId 属性,表示其父节点的 id。parentId 为 null 或 undefined 的元素表示根节点。函数 buildTree 接受两个参数:data 和 parentId,返回一个树形结构的数组。
使用示例如下:
var data = [
{ id: 1, name: 'A', parentId: null },
{ id: 2, name: 'B', parentId: null },
{ id: 3, name: 'A1', parentId: 1 },
{ id: 4, name: 'A2', parentId: 1 },
{ id: 5, name: 'A1a', parentId: 3 },
{ id: 6, name: 'A1b', parentId: 3 },
{ id: 7, name: 'B1', parentId: 2 },
{ id: 8, name: 'B2', parentId: 2 }
];
var tree = buildTree(data, null);
console.log(tree);
输出结果如下:
[
{
"id": 1,
"name": "A",
"children": [
{
"id": 3,
"name": "A1",
"children": [
{ "id": 5, "name": "A1a", "children": [] },
{ "id": 6, "name": "A1b", "children": [] }
]
},
{ "id": 4, "name": "A2", "children": [] }
]
},
{
"id": 2,
"name": "B",
"children": [
{ "id": 7, "name": "B1", "children": [] },
{ "id": 8, "name": "B2", "children": [] }
]
}
]
上述代码将平行数据转换为了树形结构,每个节点都有一个 id 和 name 属性,以及一个 children 属性,表示其子节点的数组
原文地址: https://www.cveoy.top/t/topic/ihFf 著作权归作者所有。请勿转载和采集!