js二维数组转换树形结构
时间: 2023-12-09 16:53:08 浏览: 108
以下是将js二维数组转换为树形结构的示例代码:
```javascript
function convertToTree(arr) {
const map = {};
const roots = [];
for (let i = 0; i < arr.length; i++) {
const node = arr[i];
const id = node[0];
const parentId = node[1];
if (!map[id]) {
map[id] = {
id: id,
children: []
};
}
map[id].name = node[2];
if (!parentId) {
roots.push(map[id]);
} else {
if (!map[parentId]) {
map[parentId] = {
id: parentId,
children: []
};
}
map[parentId].children.push(map[id]);
}
}
return roots;
}
const arr = [
[1, null, 'A'],
[2, 1, 'B'],
[3, 1, 'C'],
[4, 2, 'D'],
[5, 2, 'E'],
[6, 3, 'F'],
[7, 3, 'G']
];
const tree = convertToTree(arr);
console.log(tree);
```
在上面的代码中,我们首先创建了一个空的对象`map`和一个空的数组`roots`,`map`用于存储每个节点的引用,`roots`用于存储根节点。
然后我们遍历`arr`,对于每个节点,我们首先通过节点的`id`创建一个对象,然后将节点的`name`赋值给该对象的`name`属性。如果该节点没有父节点,则将该节点添加到`roots`数组中。否则,我们查找该节点的父节点是否已经在`map`中存在,如果不存在,则创建一个空的对象,并将其添加到`map`中。然后将该节点添加到父节点的`children`数组中。
最后,我们返回`roots`数组,它包含了整棵树的根节点。
阅读全文