list2Tree
list2Tree方法可以将普通的平铺结构对象数组转化为树结构。
语法
javascript
list2Tree(list, extendProps)描述
list2Tree方法会根据id和parentId两个属性构建children属性。该函数支持自定义字段名,允许用户指定不同的id、children和parentId字段名。时间复杂度为O(n),其中n是输入数组的长度。
参数
list array
平铺数据的数组,每个元素应包含标识符(id)和父级标识符(parentId)字段。
extendProps object (可选)
扩展配置对象,用于自定义字段名:
id: 指定ID字段名,默认为 'id'children: 指定子节点字段名,默认为 'children'parentId: 指定父ID字段名,默认为 'parentId'useConcat: 是否使用concat方式添加子节点,默认为 false
返回值
array返回一个树结构数组,包含根节点(即没有父节点的节点)。
注意事项
- 如果输入数组中的元素缺少id字段,函数会输出警告并直接返回原始数组
- 函数内部会自动清理空的children数组,以保持数据整洁
- 为了提高性能,函数使用Map数据结构建立ID到节点的映射,时间复杂度为O(n)
- 如果useConcat为false,函数会在开始时清空所有节点的children字段,防止重复叠加调用
示例
基本用法
自定义字段名
复杂层级结构
浏览器兼容
此功能在所有现代浏览器中都受支持,因为它不依赖任何特定于浏览器的API。
性能考虑
- 时间复杂度:O(n),其中n是输入数组的长度
- 空间复杂度:O(n),用于存储节点映射和结果树
- 函数使用Map数据结构来优化节点查找过程,避免嵌套循环导致的O(n²)复杂度
- 对于大型数据集,这种实现方式能够有效处理而不会显著影响性能