Skip to content

dim2List

dim2List方法可以将多维度数据转换为带有层级关系的平铺列表,用于构建树形结构。

语法

javascript
dim2List(dimList, dimLink, dimMap)

描述

dim2List方法将多维度数据转换为带有层级关系的平铺列表,用于构建树形结构。该函数接受三个参数:维度数据源、维度关联关系和维度映射配置,然后按照指定的层级结构生成具有父子关系的节点列表。时间复杂度为O(m × k),其中m是dimList的长度,k是dimLink的长度。

此函数特别适用于处理层次化的数据,如地区信息(国家→省→市→区)、组织架构、产品分类等。

参数

dimList array

  维度数据源,包含各个维度信息的对象数组。每个对象应包含不同层级的标识符和显示文本字段。

dimLink array

  维度关联关系,按层级顺序排列的维度名称数组。决定了数据的层级顺序和父子关系。

dimMap object

  维度映射配置,定义各维度的属性字段。该对象的键是dimLink中的维度名称,值是包含propFieldName(属性字段名)和textFieldName(文本字段名)的对象。

返回值

array

  返回一个数组,包含转换后的节点对象,每个节点包含 id、parentId、label、value 属性,可用于进一步构建树形结构。

注意事项

  • 输入的dimList必须是数组格式,否则返回空数组
  • dimLink也必须是数组格式,否则返回空数组
  • dimMap必须是对象格式,否则返回空数组
  • 函数内部会对生成的节点进行去重处理,确保每个ID只对应一个节点
  • 顶层节点的父ID会被设置为'-1'
  • 如果没有有效的字段配置,函数会返回空数组
  • 生成的节点ID由当前层级及之前所有层级的编码连接而成

示例

实时示例

浏览器兼容

由于使用了现代JavaScript特性(如Map、箭头函数、解构赋值等),该函数需要支持ES6特性的浏览器环境。具体包括:

  • Chrome 51+
  • Firefox 52+
  • Safari 10+
  • Edge 15+

不支持 IE 浏览器。

性能考虑

  • 时间复杂度: O(m × k),其中m是dimList的长度,k是dimLink的长度
  • 空间复杂度: O(n),其中n是输出的节点数量
  • 内部使用Map进行快速查找,提高了处理效率
  • 通过uniqBy函数对结果进行去重,确保数据的唯一性
  • 对于大型数据集,建议在必要时进行分页或懒加载处理

相关函数

  • list2Tree - 将平铺列表转换为树形结构
  • tree2List - 将树形结构转换为平铺列表
  • dim2Tree - 将维度数据直接转换为树形结构(内部使用dim2List和list2Tree)
  • treeFilter - 过滤树形结构中的节点
  • treeFind - 在树形结构中查找特定节点