将js对象转化为树状结构
时间: 2023-08-13 08:05:05 浏览: 104
可以通过递归的方式将一个 JavaScript 对象转化为树状结构。下面是一个示例代码:
```javascript
function convertToTree(data) {
const result = [];
const map = {};
for (const item of data) {
const id = item.id;
const parentId = item.parentId;
const label = item.label;
const node = { id, label };
// 如果该节点已经在 map 中存在,则直接更新 label
if (map[id]) {
map[id].label = label;
} else {
map[id] = node;
}
// 如果该节点的 parentId 不存在,则说明该节点为根节点
if (!parentId) {
result.push(node);
} else {
// 如果该节点的 parentId 存在,则将该节点添加到父节点的 children 数组中
const parent = map[parentId];
if (parent) {
if (!parent.children) {
parent.children = [];
}
parent.children.push(node);
}
}
}
return result;
}
```
该函数接受一个数组作为参数,数组中的每个元素都代表一条记录。每条记录包含三个字段:`id`、`parentId` 和 `label`,分别表示节点的唯一标识符、父节点的唯一标识符和节点的名称。
该函数通过遍历数组,将每个节点转化为一个包含 `id`、`label` 和 `children` 字段的对象,其中 `children` 字段为一个数组,存储该节点的子节点。同时,该函数使用一个 `map` 对象存储每个节点对象,以便后续查询父节点时使用。
最后,该函数返回一个数组,包含所有的根节点对象,即没有父节点的节点对象。
阅读全文