// var data = { // 0: {YY: "string0", HLS: "string0", YZ: "string0"}, // 1: {DV: "string1", TYH: "string1", NM: "string1"}, // 2: {NG: "string2", EFY: "string2", WRE: "string2"}, // }; 转为树形结构
时间: 2023-07-03 21:30:58 浏览: 109
同样可以使用类似的方法将数据转换为树形结构:
```javascript
function buildTree(data) {
const keys = Object.keys(data);
const idMapping = keys.reduce((acc, key, i) => {
acc[key] = i;
return acc;
}, {});
let root;
keys.forEach(key => {
const el = data[key];
const parentId = el.parentId || "0";
if (parentId === "0") {
root = el;
return;
}
const parentEl = data[parentId];
parentEl.children = [...(parentEl.children || []), el];
});
return root;
}
const data = {
0: {YY: "string0", HLS: "string0", YZ: "string0"},
1: {DV: "string1", TYH: "string1", NM: "string1", parentId: "0"},
2: {NG: "string2", EFY: "string2", WRE: "string2", parentId: "0"},
3: {AAA: "string3", BBB: "string3", parentId: "1"},
4: {CCC: "string4", DDD: "string4", parentId: "1"},
5: {EEE: "string5", FFF: "string5", parentId: "2"}
};
const tree = buildTree(data);
console.log(tree);
```
输出结果:
```json
{
"YY": "string0",
"HLS": "string0",
"YZ": "string0",
"children": [
{
"DV": "string1",
"TYH": "string1",
"NM": "string1",
"parentId": "0",
"children": [
{
"AAA": "string3",
"BBB": "string3",
"parentId": "1"
},
{
"CCC": "string4",
"DDD": "string4",
"parentId": "1"
}
]
},
{
"NG": "string2",
"EFY": "string2",
"WRE": "string2",
"parentId": "0",
"children": [
{
"EEE": "string5",
"FFF": "string5",
"parentId": "2"
}
]
}
]
}
```
注意,这里新增了一个 `parentId` 字段来表示父节点的 id,如果没有指定则默认为 `"0"`。同时数据的键值表示节点的 id,也就是说 `"0"` 表示根节点。
阅读全文