js 一个数组,拿id寻找id等于parentId为子集,组合成为一个树形结构
时间: 2024-02-20 08:59:04 浏览: 144
好的,这是一个常见的树形结构构建问题。您可以使用以下步骤来解决它:
1. 对数组进行排序,按照parentId进行升序排序,这样可以保证后面的节点一定在前面的节点的子节点中。
2. 创建一个对象,将每个节点的id作为键,节点本身作为值,这样可以快速地查找每个节点。
3. 创建一个空的根节点。
4. 遍历排序后的数组,对于每个节点,找到其父节点,并将其添加为父节点的子节点之一。
5. 返回根节点,即可得到组合成的树形结构。
下面是一个JavaScript示例代码,用于演示如何实现这一过程:
```javascript
function buildTree(arr) {
// 对数组进行排序
arr.sort((a, b) => a.parentId - b.parentId);
// 创建一个对象,将每个节点的id作为键,节点本身作为值
const nodes = {};
arr.forEach(node => {
nodes[node.id] = node;
});
// 创建根节点
let root = null;
// 遍历数组,构建树形结构
arr.forEach(node => {
if (node.parentId === null) {
// 如果该节点没有父节点,则将其作为根节点
root = node;
} else {
// 否则将其添加为父节点的子节点之一
const parent = nodes[node.parentId];
if (!parent.children) {
parent.children = [];
}
parent.children.push(node);
}
});
// 返回根节点
return root;
}
```
以上代码是一个基本的实现,您可以根据自己的需求进行修改和扩展。
阅读全文