数组对象转换成树结构
时间: 2024-09-26 21:16:57 浏览: 39
【list转树结构】相关附件
将数组对象转换成树形结构通常是在数据处理中遇到的问题,特别是当数据有层级关系时。假设我们有一个二维数组,每个元素代表一个节点,包含父节点ID(或其他标识其所属上级的属性),我们可以按照递归的方式构建树:
例如,假设有这样的数组:
```javascript
[
{id: 1, pid: null}, // 根节点
{id: 2, pid: 1},
{id: 3, pid: 1},
{id: 4, pid: 2},
{id: 5, pid: 3}
]
```
可以先创建一个空的对象`tree`,然后遍历数组,对于每个节点,如果它的父ID已存在于`tree`中,就在该节点下添加当前节点;如果不存在,则表示这是根节点,直接将其添加到`tree`。
函数实现可能如下:
```javascript
function arrayToTree(arr) {
const tree = {};
arr.forEach(node => {
if (node.pid in tree) {
tree[node.pid].children.push(node);
} else {
tree[node.id] = { id: node.id, children: [node] };
}
});
return tree;
}
// 转换后的树状结构
const result = arrayToTree([...]); // 传入上述示例数组
```
阅读全文