[ { "name": "北京市", "value": "110000" }, { "name": "市辖区", "value": "110100", "parent": "110000" }, { "name": "东城区", "value": "110101", "parent": "110100" }],用typescript根据parent和value的关系把这段数据转换成多维数组
时间: 2023-07-06 22:39:18 浏览: 120
将数据转换成数组
可以使用以下 TypeScript 代码将这段数据转换成多维数组:
```typescript
interface Region {
name: string;
value: string;
parent?: string;
}
function convertToTree(data: Region[]): any[] {
const map: { [key: string]: any } = {};
const result: any[] = [];
data.forEach((region: Region) => {
map[region.value] = region;
region.children = [];
});
data.forEach((region: Region) => {
if (region.parent && map[region.parent]) {
map[region.parent].children.push(region);
} else {
result.push(region);
}
});
return result;
}
const data = [
{ "name": "北京市", "value": "110000" },
{ "name": "市辖区", "value": "110100", "parent": "110000" },
{ "name": "东城区", "value": "110101", "parent": "110100" }
];
const tree = convertToTree(data);
console.log(tree);
```
输出结果:
```
[
{
"name": "北京市",
"value": "110000",
"children": [
{
"name": "市辖区",
"value": "110100",
"parent": "110000",
"children": [
{
"name": "东城区",
"value": "110101",
"parent": "110100",
"children": []
}
]
}
]
}
]
```
这段代码首先定义了一个 `Region` 接口,用于表示地区数据的结构。然后定义了一个 `convertToTree` 函数,该函数接收一个地区数据的数组,返回一个多维数组。该函数首先创建一个对象 `map`,用于存储每个地区数据对象,并为每个地区数据对象添加一个 `children` 属性。然后遍历地区数据数组,将每个地区数据对象添加到 `map` 中。接着再次遍历地区数据数组,如果当前地区数据对象有父级地区,则将其添加到父级地区的 `children` 属性中,否则将其添加到结果数组中。最后返回结果数组即可。
阅读全文