根据id跟pid写一个组装成一个树形数组的方法
时间: 2024-10-16 22:20:42 浏览: 17
在JavaScript中,你可以使用递归的方式来编写一个函数,将基于id和pid的数据组装成一个树形数组结构。这里是一个简单的例子:
```javascript
function buildTree(data, rootId = null) {
let tree = [];
// 遍历原始数据
data.forEach(item => {
if (item.pid === rootId) { // 如果当前项的父ID等于根ID
const node = item; // 创建新节点
node.children = []; // 初始化子节点列表
// 递归查找并添加子节点
tree.push(node);
buildTree(data, item.id).forEach(childNode => {
node.children.push(childNode);
});
}
});
return tree;
}
```
这个`buildTree`函数接受一个包含`id`和`pid`字段的对象数组(通常代表数据库查询结果),以及一个可选的`rootId`(默认为null,表示无父级)。它首先创建一个空数组`tree`来存放最终的树形结构。
对于每个元素,如果其父ID匹配传入的根ID,我们就将其作为新的树节点,并开始递归查找该节点的所有子节点,将它们添加到当前节点的`children`属性中。最后返回整个树形结构。
如果你有具体的`data`数组,可以像这样使用这个函数:
```javascript
const dataArray = ...; // 你的数据数组
const treeArray = buildTree(dataArray);
阅读全文