首页 >web前端 >js教程 >如何在 JavaScript 中从平面数组高效构建层次树?

如何在 JavaScript 中从平面数组高效构建层次树?

Patricia Arquette
Patricia Arquette原创
2024-12-10 15:27:14877浏览

How to Efficiently Build a Hierarchical Tree from a Flat Array in JavaScript?

在 JavaScript 中从平面数组构建层次树

在 JavaScript 中,在某些情况下您可能需要将平面数组转换为将表示层次结构的对象转换为嵌套的树结构。在处理复杂的 JSON 数据时可能会出现这种情况,如提供的示例所示。

为了构建树结构,我们使用基于地图的方法。该方法高效且支持多个根节点。它要求父节点在平面数组中位于其子节点之前。

以下是我们在 JavaScript 中实现此功能的方法:

function list_to_tree(list) {
  var map = {}, node, roots = [], i;

  for (i = 0; i < list.length; i += 1) {
    map[list[i].id] = i; // initialize the map
    list[i].children = []; // initialize the children
  }

  for (i = 0; i < list.length; i += 1) {
    node = list[i];
    if (node.parentId !== "0") {
      // if you have dangling branches check that map[node.parentId] exists
      list[map[node.parentId]].children.push(node);
    } else {
      roots.push(node);
    }
  }
  return roots;
}

var entries = //Your flat array of entries

console.log(list_to_tree(entries));

此解决方案初始化一个映射映射,该映射存储每个节点的索引ID,确保快速查找。然后它会遍历列表两次。在第一遍中,它将每个节点的孩子属性初始化为空数组。在第二遍中,它通过使用地图中的数据将节点附加到各自的父节点来构建树结构。如果节点的parentId 为“0”,则将其视为根节点并添加到根数组中。最后,list_to_tree 函数返回根节点数组。

以上是如何在 JavaScript 中从平面数组高效构建层次树?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn