js 一个数组,拿id寻找id等于parentId为子集,组合成为一个树形结构
时间: 2024-02-20 15:59:04 浏览: 158
好的,这是一个常见的树形结构构建问题。您可以使用以下步骤来解决它:
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;
}
```
以上代码是一个基本的实现,您可以根据自己的需求进行修改和扩展。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20250102104920.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)