@pkt/utils
Version:
67 lines (66 loc) • 2.41 kB
TypeScript
import type { SafeAny } from '@pkt/utils/types';
/**
* 列表转树结构
* @param arr 数组
* @param id 条件id
* @param pid 父级id
* @param childName 子节点集合属性名
* @returns T[]
*/
export declare function arrToTree<T = SafeAny>(arr: SafeAny[], id?: string, pid?: string, childName?: string): T[];
/**
* 树结构转列表
* @param tree 树结构数据
* @param childName 子节点集合属性名
* @returns T[]
*/
export declare function treeToArr<T = SafeAny>(tree: SafeAny[], childName?: string): T[];
/**
* 查找符合条件的单个节点
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
* @returns T or null
*/
export declare function findTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): T | null;
/**
* 查找符合条件的所有节点
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
* @returns T[]
*/
export declare function findTreeNodeAll<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): T[];
/**
* 树结构遍历.
* 对于所有节点node调用callback(node),深度优先.
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
*/
export declare function forEachTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => void, childName?: string): void;
/**
* 删除符合条件的所有节点及其子节点.
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
*/
export declare function removeTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): void;
/**
* 在指定oldNode前插入newNode.
* 如果树中没有oldNode,则不会改变原数组.
* @param tree 树结构数据
* @param newNode 新节点
* @param oldNode 指定节点
* @param childName 子节点集合属性名
*/
export declare function insertTreeNodeBefore<T = SafeAny>(tree: SafeAny[], newNode: T, oldNode: T, childName?: string): void;
/**
* 在指定oldNode后插入newNode.
* 如果树中没有oldNode,则不会改变原数组.
* @param tree 树结构数据
* @param oldNode 指定节点
* @param newNode 新节点
* @param childName 子节点集合属性名
*/
export declare function insertTreeNodeAfter<T = SafeAny>(tree: SafeAny[], oldNode: T, newNode: T, childName?: string): void;