@hubxu/utils / Exports / data/tree
- buildTree
- findParentNodeIterative
- findTreeNodeAndPathByIdIterative
- findTreeNodeByKeyValueIterative
- findTreeNodeIterative
- removeEmptyChildrenIterative
▸ buildTree<T>(arr, options?): BuildTreeNode<T>[]
将扁平数据转换为树形结构
Export
| Name | Type | Description |
|---|---|---|
T |
extends Record<string | number, any> |
扩展自 Record<string | number, any> 的类型 |
| Name | Type | Description |
|---|---|---|
arr |
T[] |
需要转换的扁平数据数组 |
options? |
Object |
可选的配置参数 |
options.parentKey? |
string |
对象父级的键,默认为 'pid' |
options.rootValue? |
string | number |
根节点的值,默认为 0,pid = 0 的节点为根节点 |
options.selfKey? |
string |
对象自身的键,默认为 'id' |
BuildTreeNode<T>[]
返回树形结构的数组
▸ findParentNodeIterative<T>(data, isParentCallback): T | null
在树结构中迭代查找满足条件的节点的父节点
Description
该函数使用迭代方式遍历树结构,查找满足指定条件的节点的父节点。 适用于需要在大型树结构中快速定位特定节点的父节点的场景。
Example
const treeData = [
{ id: 1, children: [
{ id: 2, name: 'target' },
{ id: 3 }
]},
{ id: 4, children: [{ id: 5 }] }
];
const parentNode = findParentNodeIterative(treeData, node => node.name === 'target');
console.log(parentNode); // 输出: { id: 1, children: [...] }| Name | Type |
|---|---|
T |
extends Record<string, any> |
| Name | Type | Description |
|---|---|---|
data |
T[] |
树结构数据数组 |
isParentCallback |
(node: T) => boolean |
判断是否为目标节点的回调函数 |
T | null
返回满足条件的节点的父节点,如果未找到则返回null
▸ findTreeNodeAndPathByIdIterative<T>(data, id): FindTreeValueAndPathResult<T>
根据id查找树中的节点及路径
| Name | Type |
|---|---|
T |
extends Record<string, any> |
| Name | Type |
|---|---|
data |
T[] |
id |
number |
FindTreeValueAndPathResult<T>
▸ findTreeNodeByKeyValueIterative<T>(data, value, key?): T | null
根据id查找树中的节点
| Name | Type |
|---|---|
T |
extends Record<string, any> |
| Name | Type | Default value |
|---|---|---|
data |
T[] |
undefined |
value |
string | number |
undefined |
key |
string |
'id' |
T | null
▸ findTreeNodeIterative<T>(data, cb): T | null
查找树中的节点,根据回调函数判断
| Name | Type |
|---|---|
T |
extends Record<string, any> |
| Name | Type |
|---|---|
data |
T[] |
cb |
(node: T) => boolean |
T | null
▸ removeEmptyChildrenIterative<T>(data): void
删除树中的空children属性
| Name | Type |
|---|---|
T |
extends Record<string, any> |
| Name | Type |
|---|---|
data |
T[] |
void