📖 功能概述
对树形数据的路径结构执行降级(Shift)操作——从路径中移除指定数量的层级索引,
使树形数据的结构变得更浅、更简单。输入数据默认经过 Simplify 预处理(折叠重叠路径)。
降级值(偏移)支持正负整数:
- 正数:从路径开头开始保留指定数量的索引,丢弃后续
- 负数:从路径末尾开始保留指定数量的索引,丢弃前面
- 0:保持路径不变
安全保护机制:当偏移量导致路径深度降为 0 或负数时(即降级过头),组件提供了右键菜单选择兜底策略。
🧠 核心算法:路径区间裁剪
路径分解规则
设偏移值 O,路径索引数组 P[0..N-1](N = 深度):
O > 0 (保留前 O 级):
新路径 = P[0], P[1], ... , P[O-1] ← 保留前 O 个索引
例:{3;1;4;2},O=2 → {3;1}
O < 0 (保留后 |O| 级):
新路径 = P[N+|O|], ..., P[N-1] ← 保留后 |O| 个索引
例:{3;1;4;2},O=-2 → {4;2}
O = 0:保持原路径不变
降级过深时的兜底策略
当路径深度 N ≤ |O| 时(降级后深度为 0 或负数):
「保留最后一级」(默认):
新路径 = {P[0]} — 以原路径的第一个索引作为一级路径
「不保留最后一级」:
新路径 = {0} — 所有降级过深的数据统一归入 {0} 路径
📋 使用示例
输入树(Simplify 后):
{0;0;0} → [A,B]
{0;0;1} → [C]
{0;1;0} → [D,E,F]
降级值 O = 1:
{0;0;0} → 保留前 1 级 → {0} ← [A,B]
{0;0;1} → 保留前 1 级 → {0} ← [C]
{0;1;0} → 保留前 1 级 → {0} ← [D,E,F]
合并后:{0} → [A,B,C,D,E,F](三级折叠为单级)
降级值 O = -1:
{0;0;0} → 保留后 1 级 → {0} ← [A,B]
{0;0;1} → 保留后 1 级 → {1} ← [C]
{0;1;0} → 保留后 1 级 → {0} ← [D,E,F]
合并后:{0} → [A,B,D,E,F], {1} → [C]