在 JavaScript 中从平面数组数据构建树结构
处理复杂的分层数据时,有必要将其组织成树 -类似于分析和演示的结构。在本例中,有序 JSON 文件包含数据,每个条目都有 id、parentId、级别和文本。任务是将这种平面数据结构转换为嵌套层次结构。
为了有效地实现这种转换,利用地图查找策略非常重要。这涉及创建一个映射,将每个 id 映射到其在列表中的索引。通过利用此映射,可以一次性构建嵌套层次结构,从而无需多次循环。
以下 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; }
通过创建一个映射来快速访问父节点并初始化每个节点的子列表,该函数可以有效地合并两个 for 循环。此方法支持多个根,并且可以处理悬挂分支或通过简单的修改忽略它们。
要演示该函数的功能,您可以使用以下输入执行它:
var entries = [{ "id": "12", "parentId": "0", "text": "Man", "level": "1", "children": null }, { "id": "6", "parentId": "12", "text": "Boy", "level": "2", "children": null }, { "id": "7", "parentId": "12", "text": "Other", "level": "2", "children": null }, { "id": "9", "parentId": "0", "text": "Woman", "level": "1", "children": null }, { "id": "11", "parentId": "9", "text": "Girl", "level": "2", "children": null } ]; console.log(list_to_tree(entries));
这将输出具有节点之间预期关系的分层树结构。通过利用地图查找策略,这种方法提供了一种高效灵活的解决方案,用于将平面分层数据转换为结构良好的树形数组。
以上是如何在 JavaScript 中有效地将分层数据的平面数组转换为嵌套树结构?的详细内容。更多信息请关注PHP中文网其他相关文章!