扁平数组转成树结构函数,可以认为只存在一个根节点js arrToTree(arr)
时间: 2024-09-14 20:05:02 浏览: 43
js数组转换成tree结构数组
扁平数组转换成树结构,通常是在给定一个一维数组表示的层级数据的情况下,通过特定规则将其组织成一棵树形结构。在JavaScript中,`arrToTree`这样的函数可以根据每个元素的索引信息来确定其父节点和层级关系。下面是一个简单的示例,假设数组中的第一个元素都是顶级节点,然后后续元素的索引除以某个基数(通常是2)向下一级,余数就是当前节点的索引。
```javascript
function arrToTree(arr) {
const tree = [];
let rootIndex = 0;
// 构建根节点
const root = { value: arr[rootIndex], children: [] };
tree.push(root);
for (let i = 1; i < arr.length; i++) {
const level = Math.floor(i / 2);
const nodeIndex = i % 2 ? i - 1 : i;
// 查找并添加子节点到相应父节点
findNodeAtLevel(tree, level).children.push({ value: arr[nodeIndex] });
}
return tree;
function findNodeAtLevel(nodes, level) {
if (level === nodes.length) {
throw new Error('Invalid index');
}
return level === 0 ? nodes[0] : nodes[level].children;
}
}
// 示例
const flatArray = [1, 2, 3, 4, 5, 6, 7];
const tree = arrToTree(flatArray); // 输出:[{value: 1, children: [{value: 2}, {value: 3}]}, {value: 4, children: [{value: 5}, {value: 6}]}, {value: 7}]
```
阅读全文