jcommon
Version:
JavaScript 常用纯函数工具库
170 lines (169 loc) • 4.93 kB
TypeScript
/**
* @category Array
*/
export type DoubleRankingOption = {
/**
* 一级过滤和排序的key
*/
filterRuleKey?: string;
/**
* 一级排序规则
*/
rule?: string[];
/**
* 二级正常排序的key
*/
sortKey?: string;
sortOrder?: number;
};
/**
* @category Array
* @description: 处理复杂数组的两级排序(一级按照自定义顺序,二级可正序倒序)
* @author: wuxh
* @Date: 2020-05-06 11:37:17
* @param {arr} 需要处理的数组
* @param {options} 额外参数
* @return: {Array} 排序后的数组
* ```
* doubleRanking(
* [
* {education: '本科', age: 26},
* {education: '小学', age: 25},
* {education: '本科', age: 24},
* {education: '小学', age: 23}
* ],
* {
* filterRuleKey: 'education',
* rule: ['小学', '本科'],
* sortKey: 'age',
* sortOrder: 1
* }
* )
* => [
* {education: '小学', age: 24},
* {education: '小学', age: 26}
* {education: '本科', age: 23},
* {education: '本科', age: 25},
* ]
* ```
*/
export declare const doubleRanking: (arr: {
[key: string]: any;
}[], options: DoubleRankingOption) => any[];
/**
* @category Array
* @description: 产生随机数据
* @author: wxingheng
* @Date: 2022-10-12 11:08:50
* @param {number} num 数量
* @param {Array} arr 每个元素对象的keys
* @return {*}
```
randomData(2, ['name', 'value'])
=> [{"name":"name323","value":"value699"},{"name":"name573","value":"value393"}]
```
*/
export declare const randomData: (num: number, arr: Array<string>) => Array<any>;
/**
* @category Array
* @description: 数值转对象 (常用于处理后台返回的枚举转换,工作中很常用)
* @author: wuxh
* @Date: 2020-05-06 11:51:49
* @param {object} arr 需要作为转换后对象的key需要转换的数组
* @param {string} key 需要作为转换后对象的key
* @param {*} v 对象的value取值,默认是数组的每一个元素作为值
* @return: Object
```
const arr = arr = [{name: 111, value: 222},{name: 333, value:444}]
arrByObj(arr, 'name') => {"111":{"name":111,"value":222},"333":{"name":333,"value":444}}
arrByObj(arr, 'name', value) => {"111":222,"333":444}
```
*/
export declare const arrByObj: (arr: {
[key: string]: any;
}[], key: string, v?: string) => {
[key: string]: any;
};
/**
* @category Array
* @description: 简单数组去重,Set 处理
* @author: wxingheng
* @Date: 2022-10-12 11:16:32
* @param {string} arr
* @return {*}
```
uniqueArray([1,1,1,1,1]) => [1]; uniqueArray([1,2,3,4,5]) => [1,2,3,4,5];
```
*/
export declare const uniqueArray: (arr: string | Iterable<any> | null | undefined) => any[];
/**
* @category Array
* @description: 数组交集
* @author: wxingheng
* @Date: 2022-05-18 10:56:47
* @param {Iterable} a
* @param {Iterable} b
* @return {*} Array
* ```
* difference([2,3,4,5], [1,2,3,4]) => [5, 1] ;
* difference([1,2,3,4], [2,3,4,5]) => [1, 5];
* difference([1,2,3,4], [1,2,3,4]) => [];
* difference([1,2,3,4], []) => [1, 2, 3, 4]
* ```
*/
export declare const difference: (a: Iterable<unknown> | null | undefined, b: Iterable<unknown> | null | undefined) => Array<any>;
/**
* @category Array
* @description: 数组元素是否相同
* @author: wxingheng
* @Date: 2022-05-18 10:56:04
* @param {any} arr1
* @param {any} arr2
* @return {*}
```
arrayCompare([2,3,4,5], [5,4,3,2]) => true ;
arrayCompare([2,3,4,5], [5,4,3,2,1]) => false;
arrayCompare([2,3,4,5], []) => true;
arrayCompare([], [1,2,3,4]) => false;
arrayCompare([1,2,3,4], []) => true;
```
*/
export declare const arrayCompare: (arr1: any[], arr2: any[]) => boolean;
/**
* @category Array
* @description: 数组排序的回调函数,用于sort方法,按照对象的某个属性进行中文排序
* @author: wxingheng
* @Date: 2022-09-30 11:43:11
* @param {string} key 排序的属性
* @return {*}
* ```
* arr.sort(sortCallBackChinese('name')) => [{name: '张三'}, {name: '李四'}]
* ```
*/
export declare const sortCallBackChinese: (key: string) => (a: any, b: any) => void;
/**
* @category Array
* @description:
* @author: wxingheng
* @Date: 2022-09-30 11:45:04
* @param {string} key 对象的key
* @param {boolean} desc 是否倒序, 默认是正序
* @return {*}
* ```
* arr.sort(sortCallBackNumber('age')) => [{age: 18}, {age: 20}]
* arr.sort(sortCallBackNumber('age', true)) => [{age: 20}, {age: 18}]
* ```
*/
export declare const sortCallBackTime: (key: string, desc?: boolean) => (a: any, b: any) => void;
/**
* @category Array
* @description: reduce方法,用于数组对象的求和
* @author: wxingheng
* @Date: 2022-09-30 11:51:39
* @param {string} key
* @return {*}
* ```
* arr.reduce(reduceSum('num'), 0) => 10
* ```
*/
export declare const reduceCallBackNumber: (key: string) => (acc: any, cur: any) => void;