将以上数组用js方法处理为树状结构数组
时间: 2023-07-08 08:48:52 浏览: 90
假设给出的数组如下:
```
var arr = [
{ id: 1, name: 'Node 1', parent: 0 },
{ id: 2, name: 'Node 2', parent: 1 },
{ id: 3, name: 'Node 3', parent: 1 },
{ id: 4, name: 'Node 4', parent: 3 },
{ id: 5, name: 'Node 5', parent: 4 },
{ id: 6, name: 'Node 6', parent: 3 },
{ id: 7, name: 'Node 7', parent: 0 },
{ id: 8, name: 'Node 8', parent: 7 },
{ id: 9, name: 'Node 9', parent: 8 },
{ id: 10, name: 'Node 10', parent: 9 }
];
```
可以通过以下方式将其处理为树状结构数组:
```
function buildTree(arr, parentId) {
var tree = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].parent === parentId) {
var node = {
id: arr[i].id,
name: arr[i].name,
children: buildTree(arr, arr[i].id)
};
tree.push(node);
}
}
return tree;
}
var tree = buildTree(arr, 0);
console.log(JSON.stringify(tree));
```
这里定义了一个 `buildTree` 函数,参数 `arr` 为原始数组,`parentId` 为当前节点的父节点 ID。函数首先创建一个空数组 `tree`,然后遍历原始数组,找到所有父节点 ID 为 `parentId` 的节点,将其添加到 `tree` 中,并递归调用 `buildTree` 函数,将其子节点添加到当前节点的 `children` 属性中。最后返回 `tree` 数组,即为树状结构数组。
阅读全文