用javascript帮我写一个数组转树的函数
时间: 2024-05-10 10:21:00 浏览: 88
以下是使用递归的示例代码:
```
function arrayToTree(arr, parentId = null) {
let result = []
for (let i = 0; i < arr.length; i++) {
if (arr[i].parentId === parentId) {
let obj = {
id: arr[i].id,
name: arr[i].name,
children: arrayToTree(arr, arr[i].id)
}
result.push(obj)
}
}
return result
}
```
其中,`arr` 是输入的数组,每个元素包含 `id`、`name` 和 `parentId`。`parentId` 为 `null` 表示该元素为根节点。函数返回一个树型结构的数组,每个节点包含 `id`、`name` 和 `children`(子节点数组)。
示例输入:
```
let arr = [
{ id: 1, name: 'A', parentId: null },
{ id: 2, name: 'B', parentId: 1 },
{ id: 3, name: 'C', parentId: 1 },
{ id: 4, name: 'D', parentId: 2 },
{ id: 5, name: 'E', parentId: 2 },
{ id: 6, name: 'F', parentId: 3 },
{ id: 7, name: 'G', parentId: null },
{ id: 8, name: 'H', parentId: 7 },
]
```
示例输出:
```
[
{
"id": 1,
"name": "A",
"children": [
{
"id": 2,
"name": "B",
"children": [
{ "id": 4, "name": "D", "children": [] },
{ "id": 5, "name": "E", "children": [] }
]
},
{
"id": 3,
"name": "C",
"children": [
{ "id": 6, "name": "F", "children": [] }
]
}
]
},
{
"id": 7,
"name": "G",
"children": [
{ "id": 8, "name": "H", "children": [] }
]
}
]
```
阅读全文