翻转数据树图标

LK COMPONENT DOCS · TREE

翻转数据树

保留每条路径除末级以外的前缀,用分支内的项序号替换原末级,从而把相同前缀下“处在同一位置”的数据重新汇入同一分支。

功能概览

它不是把整棵树简单转置,也不会交换路径的全部层级。组件逐个读取原分支:先去掉路径最后一级,再把该分支内第 0、1、2… 项分别放入“保留前缀 + 0、1、2…”的新路径。相同前缀下的多个原分支会在相同项序号处汇合;不同前缀始终彼此独立。

数据对象本身、每个对象的内容以及读入顺序都不会被修改,变化只发生在数据树的分组路径上。

翻转数据树组件保留路径前缀并用分支内项序号重组末级的逻辑教程图
示例中,{0;0} 与 {0;1} 具有相同前缀 {0},所以两者的第 0 项汇入新路径 {0;0},第 1 项汇入 {0;1};只有前一分支拥有的第 2 项单独进入 {0;2}。前缀 {1} 的数据独立处理。

适用场景

  • 把同一组下多个分支的第 0 项、第 1 项、第 2 项分别汇总。
  • 将“对象分支内的属性列表”改成“按属性位置分支”的结构。
  • 在保留项目、楼层或构件组前缀的同时,只翻转路径的最后一个分类维度。
  • 为需要按项序号比较或配对的下游组件准备数据。

工作流程

  1. 检查输入树的所有路径是否具有相同层级;只要有一条层级不同,本次处理就停止。
  2. 对每条路径移除最后一级,得到需要保留的路径前缀。
  3. 读取该分支中每个对象的位置,从 0 开始编号。
  4. 为每个对象建立“原路径前缀 + 项序号”的新路径。
  5. 把落在相同新路径的数据按原分支遍历顺序追加到一起,输出重组后的数据树。

输入与输出

端口要求与结构结果与空值行为
数据树(D)必需,通用数据树。所有路径的层级数量必须一致;分支长度可以不同。未提供数据时提示警告;空树输出空树。不同类型的数据可以共存,因为组件不改动对象本身。
翻转结果(D)数据树。路径前缀来自原路径,最后一级改为原分支内的项序号。相同前缀、相同项序号的数据会合并到同一分支;较长原分支多出的项会形成额外的新路径。

实际示例

输入 {0;0} = [A0, A1, A2],{0;1} = [B0, B1],{1;0} = [C0, C1]。输出为 {0;0} = [A0, B0]、{0;1} = [A1, B1]、{0;2} = [A2]、{1;0} = [C0]、{1;1} = [C1]。可以看到,{0} 与 {1} 两个前缀没有混合,原分支末级 0、1 不再参与输出路径;真正决定新末级的是对象在各自分支中的位置。

常见问题与限制

  • 所有输入路径必须具有相同层级。例如 {0;0} 与 {1;0;0} 混用会报错且没有输出。
  • 分支长度不必相同;较短分支只是不会为缺少的项序号贡献数据。
  • 若原路径只有一级,保留前缀为空,新路径就直接成为 {0}、{1}、{2}…。
  • 组件不按数值大小、名称或数据类型排序,只使用对象在原分支中的现有位置。
  • 没有额外菜单或模式;需要翻转其他路径层级时,应先重构路径,使目标层级成为末级。