/** * 数组相关的工具函数 * * utils.ts 中代码太长,拆分一下 * * @filename packages/utils/src/utils/arrayUtils.ts * @author Mr Prince * @date 2023-04-20 09:41:53 */ /** * split arr to chunks * every chunk's size is equal or less then size */ export declare const chunk: (arr: T[], size: number) => T[][]; /** * 反转数组中的某一段(不包括end) */ export declare function reverseRange(arr: unknown[], start: number, end: number): void; /** * 交换数组中的两个元素 * @returns - 修改过后的数组,和传入的是同一个数组 */ export declare function swap(arr: T[], index1: number, index2: number): T[]; /** * 二分搜索 * 找到第一个满足条件的下标 * @param values - 有序数组 * @param target - 目标值 * @param compare - 比较函数: 返回 <0(a < b), 0(a == b), >0(a > b) */ export declare const findFirstIndex: (values: T[], target: T, compare?: ((a: T, b: T) => number) | undefined) => number; /** * 判断两个数组中的元素是否完全相同 */ export declare const isArrayElementsEqual: (values0: T[], values1: T[], comparator?: (value0: T, value1: T) => boolean) => boolean; /** * 数组去重 */ export declare function distinct(arr: unknown[]): unknown[]; declare type CA = T extends (infer Item)[] ? Item[] : T[]; /** * 转化成数组 * 原来是数组的不做任何处理 */ export declare function castArray(value: T): CA; /** * 数组浅拷贝 [start, end) * @param src 源数组 * @param dest 目标数组 * @param start 开始位置 * @param end 结束位置 结束位置不能大于arr.length */ export declare function copyArray(src: T[], dest: T[], start?: number, end?: number): void; /** * 打乱数组,或称洗牌算法 * * Knuth-Durstenfeld Shuffle */ export declare function shuffle(values: T[]): void; export {};