一个数组中多个对象,对象中parentId不为空则查找数组对象中id等于parentId为父级,成为树形结构,对象中parentId为空则直接放在数组中
时间: 2024-02-20 18:01:02 浏览: 56
Java 将有父子关系的数据转换成树形结构数据
5星 · 资源好评率100%
这个问题看起来是一个算法问题,我可以给你提供一个解决方案,具体实现需要根据你的编程语言和具体场景进行调整。
可以先遍历一遍数组,将所有 parentId 为空的对象放在一个新的数组中,然后再遍历一遍数组,将 parentId 不为空的对象找到它对应的父级对象,并将其放在父级对象的 children 属性中。需要注意的是,如果父级对象还没有 children 属性,需要先创建一个空的数组。
以下是一个示例 JavaScript 实现:
```javascript
function buildTree(arr) {
const rootNodes = [];
const lookup = {};
arr.forEach(obj => {
if (!obj.parentId) {
rootNodes.push(obj);
return;
}
const parent = lookup[obj.parentId];
if (parent) {
if (!parent.children) {
parent.children = [];
}
parent.children.push(obj);
}
});
arr.forEach(obj => {
lookup[obj.id] = obj;
});
return rootNodes;
}
```
在这个示例中,我们创建了一个名为 `buildTree` 的函数,它接收一个包含多个对象的数组作为参数,并返回一个树形结构。我们首先创建了一个名为 `rootNodes` 的空数组,用于存储所有 parentId 为空的对象。然后创建了一个名为 `lookup` 的对象,用于在第二次遍历中查找对象的父级对象。接下来对数组进行第一次遍历,将 parentId 为空的对象放在 `rootNodes` 数组中,将其他对象的 id 和对象本身存储在 `lookup` 对象中。最后对数组进行第二次遍历,将 parentId 不为空的对象找到它对应的父级对象,并将其放在父级对象的 `children` 属性中。
阅读全文