/** * 从fromIndex查找符合condition的index * 如果 fromIndex 刚好符合condition, 则返回 fromIndex * 如果 没有符合要求的, 则返回 -1 * @param arr 数组 * @param fromIndex 起始索引 * @param condition 查找条件 */ export declare function findIndexFrom(arr: T[], fromIndex: number, condition: (i: T) => boolean): number; export declare function reAppend(arr: T[], item: T): T[]; export declare function swapByProp(xs: T[], propName: keyof T, v1: any, v2: any): T[]; export declare function swap(xs: T[], i1: number, i2: number): T[]; export declare function dropIndex(arr: T[], i: number): T[]; export declare function insertIndex(arr: T[], i: number, v: T): T[]; export interface ArrayDiffs { added: T[]; removed: T[]; updated: Partial[]; reserved?: T[]; } export declare function arrayCompareBy(arr1: T[], arr2: T[], id: keyof T): ArrayDiffs; export declare function arrayCompare(arr1: T[], arr2: T[]): ArrayDiffs; export declare function patchByDiffs(arr: T[], diffs: ArrayDiffs): T[]; export declare function upsert(arr: T[], query: (t: T) => boolean, patch: Partial): T[]; export declare function insertArround(arr: T[], placeholder: T | ((i: number) => T)): T[]; export declare function insertBetween(arr: T[], placeholder: T | ((i: number) => T)): T[]; /** * 对齐到长度toLength * 如果长度小于toLength, 则用f填充 * 如果长度大于toLength, 则删除多余元素 * 如果元素为undefined, 则会填充之! */ export declare function padding(arr: T[], toLength: number, f: ((i: number) => T) | T): T[]; /** * 类似于slice, 但针对string 和 array * sliceBy('12345', ':3') => '12' * sliceBy('12345', '2:4') => '23' * sliceBy('12345', '4:') => '45' */ export declare function sliceBy(s: string, slicer: { from?: string; to?: string; }): string; export declare function sliceBy(s: T[], slicer: { from?: T; to?: T; }): T[]; export declare function crossJoin(xs: T1[], ys: T2[]): [T1, T2][]; /** * 是否二维数组 * [] => true * [1, 2] => false * [[1], [2]] => ture */ export declare const is2dArray: (arr: any) => boolean; export declare function getNextByIndex(xs: T[], id: any): T | null; export declare function getPrevByIndex(xs: T[], id: any): T | null; /** * 按条件替换 * @param source 要修改的源数组 * @param patch patch数组, 见test * @param findFn patch中的元素, 对应到source中哪个元素? 通过findFn查找 * @param updateFn 找到sourceEl后, 通过什么办法修改? * @return 修改后的数据 */ export declare function updateBy(source: T[], patch: T[], findFn: (sourceEl: T, patchEl: T) => boolean, updateFn: (sourceEl: T, patchEl: T) => T): T[]; export declare function replaceById(newArray: T[], baseArray: T[]): T[]; /** * @param arr * @param indexRange 如 [3,5], 表示要移动从3-5(含)的区块. 由于是区块移动, 所以看作一个整体 * @param delta 负值左移, 正值右移 ( 注意是区块移动, indexRange 当成整体 ) * @returns [变动后的数组, 是否变动] */ export declare function batchMove(arr: T[], indexRange: number[], delta: number): [T[], boolean];