将平行数据递归为树形数据,使用js写出示例代码
时间: 2024-12-20 15:31:23 浏览: 9
将平行的数据结构转换成树形数据,通常用于构建目录结构、层级菜单等场景。JavaScript 中可以使用递归来实现这种转换。假设我们有一个数组,每个元素都有一个 `parent` 属性来表示其在树中的上级,我们可以编写如下示例:
```javascript
function flattenToTree(data, parent = null) {
// 创建空数组存储结果
const result = [];
for (let item of data) {
// 如果当前元素的 parent 等于给定的 parent,则它是一个子节点
if (item.parent === parent) {
// 使用当前元素作为新节点,子节点数组作为值
const newNode = { value: item, children: [] };
// 递归处理当前元素的所有子项,并将它们添加到新节点的 children 列表里
newNode.children = flattenToTree(item.children, item.id); // 假设item.id是我们用来区分父节点的关键字段
result.push(newNode);
}
}
return result;
}
// 示例数据
const parallelData = [
{ id: 1, name: 'A', parent: null },
{ id: 2, name: 'B', parent: 1 },
{ id: 3, name: 'C', parent: 1 },
{ id: 4, name: 'D', parent: 2 },
{ id: 5, name: 'E', parent: 2 },
];
// 转换为树形数据
const treeData = flattenToTree(parallelData);
console.log(treeData);
阅读全文