/** * 数组工具 * @description * @author nanshen * @creat 2021-09-15 10:31:35 */ export type TreeData = { key: string; title: string; }; declare namespace ArrayUtil { /** * 对象数组去重 * @param array 去重对象 * @param key 去重key * @param isSaveLast 默认true ,true返回重复最后一个对象,false返回重复第一个对象 * @example * const array = [{a:1,b:3},{a:1,b:2},{a:2,b:1}] * arrayWeightRemoval(array,'a',true) => [{a:1,b:2},{a:2,b:1}] * arrayWeightRemoval(array,'a',false) => [{a:1,b:3},{a:2,b:1}] */ const arrayWeightRemoval: (array: T[] | undefined, key: U extends keyof T ? U : undefined, isSaveLast?: boolean) => T[]; /** * 数组去重 * @param { (number | string)[]} arr 数组 * @example * unique([1,3,1]) =>[1,3] */ const unique: (arr: (number | string)[]) => (number | string)[]; /** * 求两个集合的并集 * @param { (number | string)[]} a 集合a * @param { (number | string)[]} b 集合b * @example * union([1,3,4],[1,2]) => [1,2,3,4] */ const union: (a: (number | string)[], b: (number | string)[]) => (number | string)[]; /** * 求两个集合的交集 * @param { (number | string)[]} a 集合a * @param { (number | string)[]} b 集合b * @example * intersect([1,3,4],[1,2]) => [1] */ const intersect: (a: (number | string)[], b: (number | string)[]) => (number | string)[]; /** * 求两个集合的差集 * @param { (number | string)[]} a 集合a * @param { (number | string)[]} b 集合b * @example * difference([1,2,3],[1]) => [2,3] */ const difference: (a: (number | string)[], b: (number | string)[]) => (number | string)[]; /** * 最大值 * @param {number[]} arr 数组 * @example * max([1,2,3]) => 3 */ const max: (arr: number[]) => number; /** * 最小值 * @export * @param {number[]} arr 数组 * @example * min([1,2,3]) => 1 */ const min: (arr: number[]) => number; /** * 求和 * @export * @param {number[]} arr 数字数组 * @example * sum([1,2]) => 3 */ const sum: (arr: number[]) => number; /** * 平均值 * @export * @param {number[]} arr 数字数组 * @example * average([1,2,3]) => 2 */ const average: (arr: number[]) => number; /** * 删除其中一个元素 * @export * @param {(number | string)[]} arr 数组 * @param {(number | string)} ele 要删除的元素 * @example * remove([1,2,3],3) => [1,2] */ const remove: (arr: (number | string)[], ele: number | string) => (number | string)[]; /** * 数组排序 * @param {number[]} arr 数组 * @param {number} type 1:从小到大 2:从大到小 3:随机 * @example * sort([1,2,3],1) => [1,2,3] * sort([1,2,3],2) => [3,2,1] * sort([1,2,3],3) => [1,3,2] */ const sort: (arr: number[], type?: number) => number[]; /** * 循环树改变原数组 * @param {Array} tree * @param {String} children * @param {Function} callback */ function forEachTree(tree: T[], children: string, callback: (t: T) => void): T[]; /** * 列表转树 * @param {T} list * @param fieldNames { label = "name", value = "id", parent = "pid", children = "children", rootPid = null } * @returns {T[]} */ function getTreeByList(list: T[], fieldNames?: { label?: string; value?: string; parent?: string; children?: string; /** 根节点pid */ rootPid?: any; }): (T & TreeData)[]; /** * 树转列表 * @param list 列表 */ function getListByTree(list: T[], children?: string): T[]; } export default ArrayUtil;