用ts写一个数组转树形结构的方法
时间: 2024-05-14 12:14:44 浏览: 154
js代码-数组转化树形结构
下面是一个使用 TypeScript 编写的数组转树形结构的方法:
```typescript
interface TreeNode {
id: number;
name: string;
children?: TreeNode[];
}
function arrayToTree(array: any[], parentId: number): TreeNode[] {
const tree: TreeNode[] = [];
array.forEach((item: any) => {
if (item.parentId === parentId) {
const node: TreeNode = { id: item.id, name: item.name };
const children = arrayToTree(array, item.id);
if (children.length) {
node.children = children;
}
tree.push(node);
}
});
return tree;
}
```
该方法接受一个数组和一个父节点 ID,将数组转换为树形结构。每个数组元素都应该包含 `id` 和 `name` 属性,并且包含一个 `parentId` 属性,指向该元素的父节点。如果一个元素没有父节点,它的 `parentId` 应该设置为 `null` 或 `undefined`。
该方法返回一个 `TreeNode` 数组,其中每个节点都包含 `id`、`name` 和 `children` 属性。如果一个节点没有子节点,它的 `children` 属性将是 `undefined`。
使用该方法的示例代码:
```typescript
const array = [
{ 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: 3 },
];
const tree = arrayToTree(array, null);
console.log(tree);
```
该示例代码将会输出以下结果:
```
[
{
"id": 1,
"name": "A",
"children": [
{
"id": 2,
"name": "B",
"children": [
{ "id": 4, "name": "D" },
{ "id": 5, "name": "E" }
]
},
{
"id": 3,
"name": "C",
"children": [
{ "id": 6, "name": "F" },
{ "id": 7, "name": "G" }
]
}
]
}
]
```
阅读全文