export interface TreeItem { children?: TreeArray; [propName: string]: any; } export interface TreeArray extends Array { } /** * 类似于 arr.map 方法,此方法主要针对类似下面示例的树形结构。 * [ * { * children: [] * }, * // 其他成员 * ] * * @param {Tree} tree 树形数据 * @param {Function} iterator 处理函数,返回的数据会被替换成新的。 * @return {Tree} 返回处理过的 tree */ export declare function mapTree(tree: Array, iterator: (item: T, key: number, level: number, paths: Array) => T, level?: number, depthFirst?: boolean, paths?: Array): any[]; /** * 遍历树 * @param tree * @param iterator */ export declare function eachTree(tree: Array, iterator: (item: T, key: number, level: number) => any, level?: number): void; /** * 在树中查找节点。 * @param tree * @param iterator */ export declare function findTree(tree: Array, iterator: (item: T, key: number, level: number, paths: Array) => any): T | null; /** * 在树中查找节点, 返回下标数组。 * @param tree * @param iterator */ export declare function findTreeIndex(tree: Array, iterator: (item: T, key: number, level: number, paths: Array) => any): Array | undefined; export declare function getTree(tree: Array, idx: Array | number): T | undefined | null; /** * 过滤树节点 * * @param tree * @param iterator */ export declare function filterTree(tree: Array, iterator: (item: T, key: number, level: number) => any, level?: number, depthFirst?: boolean): T[]; /** * 判断树中每个节点是否满足某个条件。 * @param tree * @param iterator */ export declare function everyTree(tree: Array, iterator: (item: T, key: number, level: number, paths: Array, indexes: Array) => boolean, level?: number, paths?: Array, indexes?: Array): boolean; /** * 判断树中是否有某些节点满足某个条件。 * @param tree * @param iterator */ export declare function someTree(tree: Array, iterator: (item: T, key: number, level: number, paths: Array) => boolean): boolean; /** * 将树打平变成一维数组,可以传入第二个参数实现打平节点中的其他属性。 * * 比如: * * flattenTree([ * { * id: 1, * children: [ * { id: 2 }, * { id: 3 }, * ] * } * ], item => item.id); // 输出位 [1, 2, 3] * * @param tree * @param mapper */ export declare function flattenTree(tree: Array): Array; export declare function flattenTree(tree: Array, mapper: (value: T, index: number) => U): Array; /** * 操作树,遵循 imutable, 每次返回一个新的树。 * 类似数组的 splice 不同的地方这个方法不修改原始数据, * 同时第二个参数不是下标,而是下标数组,分别代表每一层的下标。 * * 至于如何获取下标数组,请查看 findTreeIndex * * @param tree * @param idx * @param deleteCount * @param ...items */ export declare function spliceTree(tree: Array, idx: Array | number, deleteCount?: number, ...items: Array): Array; /** * 计算树的深度 * @param tree */ export declare function getTreeDepth(tree: Array): number; /** * 从树中获取某个值的所有祖先 * @param tree * @param value */ export declare function getTreeAncestors(tree: Array, value: T, includeSelf?: boolean): Array | null; /** * 从树中获取某个值的上级 * @param tree * @param value */ export declare function getTreeParent(tree: Array, value: T): T; export declare function ucFirst(str?: string): string; export declare function lcFirst(str?: string): string; /** * 将路径格式的value转换成普通格式的value值 * * @example * * 'a/b/c' => 'c'; * {label: 'A/B/C', value: 'a/b/c'} => {label: 'C', value: 'c'}; * 'a/b/c,a/d' => 'c,d'; * ['a/b/c', 'a/d'] => ['c', 'd']; * [{label: 'A/B/C', value: 'a/b/c'},{label: 'A/D', value: 'a/d'}] => [{label: 'C', value: 'c'},{label: 'D', value: 'd'}] */ export declare function normalizeNodePath(value: any, enableNodePath: boolean, labelField?: string, valueField?: string, pathSeparator?: string, delimiter?: string): { nodeValueArray: any[]; nodePathArray: any[]; };