如何高效实现JavaScript中树形结构的构建算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1201个文字,预计阅读时间需要5分钟。
目录+引言+思路+建立+ID-数组索引映射+树形结构+原理+总结+引言+我们经常会遇到树形数据结构,如组织层级、省市县或动植物分类等。以下是一个树形结构的例子:
目录
- 引言
- 思路
- 建立 ID-数组索引映射关系
- 构造树形结构
- 原理
- 总结
引言
我们经常会碰到树形数据结构,比如组织层级、省市县或者动植物分类等等数据。下面是一个树形结构的例子:
在实际应用中,比较常见的做法是将这些信息存储为下面的结构,特别是当存在1对多的父/子节点关系时:
const data = [ { id: 56, parentId: 62 }, { id: 81, parentId: 80 }, { id: 74, parentId: null }, { id: 76, parentId: 80 }, { id: 63, parentId: 62 }, { id: 80, parentId: 86 }, { id: 87, parentId: 86 }, { id: 62, parentId: 74 }, { id: 86, parentId: 74 }, ];
那么,如何将这种对象数组格式转换为层级树的格式呢?其实,利用 JavaScript 对象引用的特性,实现起来会非常简单。它可以不用递归,在O(n)时间内完成。
术语
为了表述方便,我们先来定义几个术语。我们把数组中的每个元素(也就树形图里的每个圆圈)称为“节点”。
本文共计1201个文字,预计阅读时间需要5分钟。
目录+引言+思路+建立+ID-数组索引映射+树形结构+原理+总结+引言+我们经常会遇到树形数据结构,如组织层级、省市县或动植物分类等。以下是一个树形结构的例子:
目录
- 引言
- 思路
- 建立 ID-数组索引映射关系
- 构造树形结构
- 原理
- 总结
引言
我们经常会碰到树形数据结构,比如组织层级、省市县或者动植物分类等等数据。下面是一个树形结构的例子:
在实际应用中,比较常见的做法是将这些信息存储为下面的结构,特别是当存在1对多的父/子节点关系时:
const data = [ { id: 56, parentId: 62 }, { id: 81, parentId: 80 }, { id: 74, parentId: null }, { id: 76, parentId: 80 }, { id: 63, parentId: 62 }, { id: 80, parentId: 86 }, { id: 87, parentId: 86 }, { id: 62, parentId: 74 }, { id: 86, parentId: 74 }, ];
那么,如何将这种对象数组格式转换为层级树的格式呢?其实,利用 JavaScript 对象引用的特性,实现起来会非常简单。它可以不用递归,在O(n)时间内完成。
术语
为了表述方便,我们先来定义几个术语。我们把数组中的每个元素(也就树形图里的每个圆圈)称为“节点”。

