js一维数组转树形结构
时间: 2024-09-20 19:10:00 浏览: 47
js代码-数组拍平:将多维数组转化为一维
在JavaScript中,将一维数组转换为树形结构通常是为了组织数据,使其更易于表示层级关系。这可以通过递归或者栈技术来实现。下面是一个简单的例子,假设我们有一维数组,每个元素包含`id`, `parentId`等字段:
```javascript
function arrayToTree(data) {
const map = new Map(); // 用于存储已处理过的节点
function buildTree(item) {
if (!item.id || !item.parentId) return; // 如果缺少必要的属性,则忽略
let node = map.get(item.id); // 查找已有节点
if (!node) { // 否则,创建新节点并添加到map中
node = { id: item.id, children: [] };
map.set(item.id, node);
}
let parent = map.get(item.parentId);
if (parent) { // 找到父节点,并将其添加为子节点
parent.children.push(node);
}
}
data.forEach(buildTree); // 遍历所有元素并构建树形结构
return Array.from(map.values()); // 返回所有的节点组成数组
}
// 示例输入:
const arr = [
{ id: 1, parentId: null },
{ id: 2, parentId: 1 },
{ id: 3, parentId: 1 },
{ id: 4, parentId: 2 },
{ id: 5, parentId: 3 }
];
// 示例输出:
const tree = arrayToTree(arr);
console.log(tree);
```
阅读全文