js根据id和sonid递归成树结构
时间: 2024-11-22 10:35:03 浏览: 8
在JavaScript中,根据ID和子ID(sonid)递归地将数据转换为树形结构通常涉及到遍历数组并使用函数来维护父子关系。这个过程可以使用递归函数实现,下面是一个简单的例子:
```javascript
function buildTree(data, idProp = 'id', parentIdProp = 'parent_id') {
let tree = {};
function recursiveBuild(item) {
// 获取当前节点的id
const id = item[idProp];
if (!tree[id]) {
tree[id] = { ...item };
// 如果存在sonid,则进一步递归查找其子节点
if (item[parentIdProp]) {
recursiveBuild(data.find(node => node[idProp] === item[parentIdProp]));
}
}
return tree;
}
// 对整个数据数组进行遍历,构建树状结构
data.forEach(item => recursiveBuild(item));
return tree;
}
// 使用示例:
const data = [
{ id: 1, name: '根节点1', parent_id: null },
{ id: 2, name: '子节点1', parent_id: 1 },
{ id: 3, name: '子节点2', parent_id: 1 },
{ id: 4, name: '孙子节点', parent_id: 2 },
];
const treeData = buildTree(data);
console.log(treeData);
阅读全文