com-tools
Version:
com-tools 提供了一些通用的工具函数;
216 lines • 10.9 kB
TypeScript
export type TestFun<Value> = (a: Value, b: Value) => any;
export type ArrayCallbackFun<ThisValue, Value, ReturnType> = (this: ThisValue, value: Value, index: number, array: Value[]) => ReturnType;
/**
* 移动数组的元素,会改变原数组
* @remarks
* 将数组中的元素 从 from 移动到 to
* @param arr
* @param from
* @param to
* @returns 原数组对象
*/
export declare function moveItemInArray<Item>(arr: Item[], from: number, to: number): Item[];
/**
* 移动数组的元素,不改变原数组
* @remarks
* 将数组中的元素 从 from 移动到 to
* @param arr
* @param from
* @param to
* @returns 新的数组
*/
export declare function moveItemInNewArray<Item>(arr: Item[], from: number, to: number): Item[];
/**
* 批量移动数组的元素,会改变原数组
* @remarks
* 将数组中的元素 从 from 移动到 to
* from 与 to 中的索引一一对应
* @param arr
* @param froms
* @param tos
* @returns 原数组对象
*/
export declare function moveItemsInArray<Item>(arr: Item[], froms: number[], tos: number[]): Item[];
/**
* 在新数组中批量移动数组的元素,不会改变原数组
* @remarks
* 将数组中的元素 从 from 移动到 to
* from 与 to 中的索引一一对应
*
* 该方法会比 moveItemsInArray 性能更高一些
* @param arr
* @param froms
* @param tos
* @returns 新数组
*/
export declare function moveItemsInNewArray<Item>(arr: Item[], froms: number[], tos: number[]): Item[];
/**
* 将可迭代的对象转成 JSON 数组片断
* @param items
* @param space
* @returns
*/
export declare function toJSONArrayFragment(items: Iterable<any>, space?: string | number): string;
/**
* 将 项目转成 JSON 的数组中的 item 片断
* @param item
* @param space
* @param itemSeparator - 两个 item 之间的分隔符;默认情况下,如果 space 有值且不为0,则 itemSeparator 默认为 \n 否则 为 空
* @returns
*/
export declare function toJSONItemFragment(item: any, space?: string | number, itemSeparator?: string): string;
/**
* array_safelyOperateIndexs(indexList, operation, thisValue)
* 安全操作指定的索引
* @param indexList : [Index] 需要被操作的索引数组
* @param operation : (currentValue,currentIndex,currentArray)=>Void 执行的操作
* @param thisValue ? : any 可选,默认值是被操作的数组,即调用者;操作 operation 的 this 值
* @returns [Item] 被操作的元素列表
*
*
* operation(currentValue,currentIndex,currentArray)=>Void
* @param currentValue : any 调用 operation 时的元素的值;
* @param currentIndex : number 调用 operation 时 currentValue 对应的最新状态的索引值;
* @param currentArray : Array 调用 operation 时 被操作时最新状态的数组;
*
*/
export declare function array_safelyOperateIndexs<T, ThisValue = T[]>(array: T[], indexList: number[], operation: ArrayCallbackFun<ThisValue, T, void>, thisValue?: ThisValue): T[];
/**
* array_safelyOperateItems(itemList, operation, thisValue)
* 安全操作指定的元素
* @param itemList : [Item] 需要被操作的元素的数组
* @param operation : (currentValue,currentIndex,currentArray)=>Void 执行的操作
* @param thisValue ? : any 可选,默认值是被操作的数组,即调用者;操作 operation 的 this 值
* @returns [Index] 被操作的元素的索引的列表;
*
*
* operation(currentValue,currentIndex,currentArray)=>Void
* @param currentValue : any 调用 operation 时的元素的值;
* @param currentIndex : number 调用 operation 时 currentValue 对应的最新状态的索引值;
* @param currentArray : Array 调用 operation 时 被操作时最新状态的数组;
*
*/
export declare function array_safelyOperateItems<T, ThisValue = T[]>(array: T[], itemList: T[], operation: ArrayCallbackFun<ThisValue, T, void>, thisValue?: ThisValue): number[];
/**
* array_safelyFilter(operation, thisValue)
* 安全地操作并过滤所有元素;与 forEach 和 filter 的区别是: safelyFilter 能保证会遍历数组中所有已存在的元素,不会受 operation 中的行为的影响;
* @param operation : (currentValue,currentIndex,currentArray)=>boolean | undefined 执行的操作, 该函数的返回值表示是否要过滤出该元素
* @param thisValue ? : any 可选,默认值是被操作的数组,即调用者;操作 operation 的 this 值
* @returns [Item] 返回被 operation 过滤出的元素
*
*
* operation(currentValue,currentIndex,currentArray)=>boolean | undefined
* @param currentValue : any 调用 operation 时的元素的值;
* @param currentIndex : number 调用 operation 时 currentValue 对应的最新状态的索引值;
* @param currentArray : Array 调用 operation 时 被操作时最新状态的数组;
* @returns boolean | undefined 表示是否要过滤出 currentValue ;
*
*/
export declare function array_safelyFilter<T, ThisValue = T[]>(array: T[], operation: ArrayCallbackFun<ThisValue, T, any>, thisValue?: ThisValue): T[];
/**
* move(fromIndex, toIndex, length = 1)
* 根据索引移动数组的元素
* @param fromIndex : number 被移动的元素的开始索引
* @param toIndex : number 元素被移动到的新位置的索引
* @param length ? : number 可选,默认值:1 ; 被移动的元素的长度;
* @returns Array 被移动的元素的数组
*/
export declare function array_move<T>(array: T[], fromIndex: number, toIndex: number, length?: number): T[];
/**
* moveTo(toIndex, ...fromIndexs)
* 根据索引批量移动数组的元素
* @param toIndex : number 元素被移动到的新位置的索引
* @param fromIndex : number 被移动的元素的索引
* @returns Array<Item> 被移动的元素的数组
*/
export declare function array_moveTo<T>(array: T[], toIndex: number, ...fromIndexs: number[]): T[];
/**
* moveItemsTo(toIndex, ...items)
* 批量移动数组的指定元素
* @param toIndex : number 元素被移动到的新位置的索引
* @param item : any 被移动的元素
* @returns Array<number> 被移动的元素的索引的数组
*/
export declare function array_moveItemsTo<T>(array: T[], toIndex: number, ...items: T[]): number[];
/**
* moveToUseTest(toIndex, needMoveTest)
* 根据测试函数批量移动数组的元素
* @param toIndex : number 元素被移动到的新位置的索引
* @param needMoveTest : (currentValue,index,arr)=>boolean 测试数组元素是否需要被移动的函数,返回 boolean 值,表示当前元素 currentValue 是否需要被移动;
* @returns Array<Item> 被移动的元素的数组
*/
export declare function array_moveToUseTest<T, ThisValue = T[]>(array: T[], toIndex: number, needMoveTest: ArrayCallbackFun<ThisValue, T, any>, thisValue?: ThisValue): T[];
/**
* insertItem(item, toIndex = 0, equalTest)
* 将指定元素插入到调用者数组中指定索引处,并且会删除调用者数组中与 item 相同的元素
* @param item : any 被插入的元素
* @param toIndex : number 元素被插入到的位置的索引
* @param equalTest ? : (a,b)=>boolean 可选, 默认是通过全等 === 来判断元素是否相等的;测试数组元素是否相同的函数,返回 boolean 值,表示 元素a 和 元素b 相同;
* @returns Array<Item> 被删除的元素
*/
export declare function array_insertItem<T>(array: T[], item: T, toIndex?: number, equalTest?: TestFun<T>): T[];
/**
* insertItemList(itemList, toIndex = 0, equalTest)
* 将指定数组itemList中的元素插入到调用者数组的指定索引处,并且会删除调用者数组中 与 itemList中元素 相同的元素
* @param itemList : [any] 被插入的元素数组
* @param toIndex ? : number 可靠;默认值:0 ; 元素被插入到的位置的索引;
* @param equalTest ? : (a,b)=>boolean 可选, 默认是通过全等 === 来判断元素是否相等的;测试数组元素是否相同的函数,返回 boolean 值,表示 元素a 和 元素b 相同;
* @returns Array<Item> 被删除的元素
*/
export declare function array_insertItemList<T>(array: T[], itemList: T[], toIndex?: number, equalTest?: TestFun<T>): T[];
/**
* delete(start, end)
* 根据索引删除数组的元素
* @param start : number 被删除的元素的开始索引
* @param end ? : number 可选,默认值:start ; 被删除的元素的结束索引;
* @returns Array 被删除的元素的数组
*/
/**
* delete(start, end)
* 根据索引删除数组的元素
* @param start : number 被删除的元素的开始索引
* @param end ? : number 可选,默认值:start ; 被删除的元素的结束索引;
* @returns Array 被删除的元素的数组
*/
export declare function array_delete<T>(array: T[], start: number, end?: number): T[];
/**
* deleteIndexs(...indexs)
* 删除数组中指定的元素
* @param index : number 被删除的元素的索引
* @returns Array<Item> 被删除的元素的数组
*/
export declare function array_deleteIndexs<T>(array: T[], ...indexs: number[]): T[];
/**
* deleteItems(...items)
* 删除数组中指定的元素
* @param item : any 被删除的元素
* @returns Array<number> 被删除的元素的索引数组
*/
export declare function array_deleteItems<T>(array: T[], ...items: T[]): number[];
/**
* deleteUseTest(needDeleteTest)
* 根据测试函数批量删除数组的元素
* @param needDeleteTest : (currentValue,index,arr)=>boolean 测试数组元素是否需要被删除的函数,返回 boolean 值,表示当前元素 currentValue 是否需要被删除;
* @returns Array<Item> 被删除的元素的数组
*/
export declare function array_deleteUseTest<T, ThisValue = T[]>(array: T[], needDeleteTest: ArrayCallbackFun<ThisValue, T, any>, thisValue?: ThisValue): T[];
/**
* filterIndexs(filterTest,thisArg)
* 该方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素的索引。
* @param filterTest : (currentValue,index,arr)=>boolean 用来测试数组的每个元素的函数。调用时使用参数 (currentValue,index,arr)。返回true表示保留该元素(通过测试),false则不保留
* @param thisArg ? : any 可选。执行 callback 时的用于 this 的值。
* @returns Array<Index> 通过测试的元素的索引
*/
export declare function array_filterIndexs<T, ThisValue = T[]>(array: T[], filterTest: ArrayCallbackFun<ThisValue, T, any>, thisValue?: ThisValue): number[];
/**
* 比较两个数组是否相等
* @remarks
* 两个数组相等的充要条件是:
* 元素个数相等 且 元素顺序相等
* @param arr1
* @param arr2
* @param equalTest
* @returns
*/
export declare function array_isEqual<T>(arr1: T[], arr2: T[], equalTest?: TestFun<T>): boolean;
//# sourceMappingURL=array.d.ts.map