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