UNPKG

@pkt/utils

Version:

67 lines (66 loc) 2.41 kB
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;