0
点赞
收藏
分享

微信扫一扫

使用js实现平行数组数据结构转树状数据结构

在JavaScript中,你可以通过递归的方式将平行数组(数组中的每个元素也是一个数组)转换为树状数据结构。以下是一个简单的示例,假设我们的平行数组具有idparentId属性,我们可以通过以下方式将其转换为树状数据结构:

javascript复制代码
 function arrayToTree(arr) {  
 
     const map = {}; // 创建一个映射对象,用于根据id查找节点  
 
     const tree = []; // 这个数组将包含转换后的树  
 
   
 
     // 首先,遍历输入数组,将每个节点放入映射对象中  
 
     arr.forEach(node => {  
 
         map[node.id] = { ...node, children: [] };  
 
     });  
 
   
 
     // 然后,再次遍历输入数组,将每个节点放入它的父节点的children数组中  
 
     arr.forEach(node => {  
 
         const parent = map[node.parentId];  
 
         if (parent) {  
 
             parent.children.push(map[node.id]);  
 
         } else {  
 
             // 如果父节点不存在,那么这个节点就是根节点  
 
             tree.push(map[node.id]);  
 
         }  
 
     });  
 
   
 
     return tree;  
 
 }

这个函数接受一个平行数组作为输入,然后返回一个树状数据结构。你可以像下面这样使用它:

javascript复制代码
 const flat = [  
 
     { id: 1, parentId: null },  
 
     { id: 2, parentId: 1 },  
 
     { id: 3, parentId: 1 },  
 
     { id: 4, parentId: 2 },  
 
     { id: 5, parentId: 3 }  
 
 ];  
 
   
 
 const tree = arrayToTree(flat);  
 
 console.log(JSON.stringify(tree, null, 2));

这将输出以下树状数据结构:

json复制代码
 [  
 
   {  
 
     "id": 1,  
 
     "parentId": null,  
 
     "children": [  
 
       {  
 
         "id": 2,  
 
         "parentId": 1,  
 
         "children": [  
 
           {  
 
             "id": 4,  
 
             "parentId": 2,  
 
             "children": []  
 
           }  
 
         ]  
 
       },  
 
       {  
 
         "id": 3,  
 
         "parentId": 1,  
 
         "children": [  
 
           {  
 
             "id": 5,  
 
             "parentId": 3,  
 
             "children": []  
 
           }  
 
         ]  
 
       }  
 
     ]  
 
   }  
 
 ]

举报

相关推荐

0 条评论