js-xxx
Version:
前端 JavaScript 常用函数/工具/方法库
133 lines • 5.4 kB
TypeScript
/**
* 数组对象转对象,按照指定的 key 分组。
* @example
* data2Obj([{a: 1, b: 2}, {a: 3}, {b: 1}, {c: 1}], 'a'); /// {1: {a: 1, b: 2}, 3: {a: 3}, undefined: {c: 1}}
* data2Obj([{a: 1, b: 'b1'}, {a: 3}, {a: 2, b: 'b2'}], 'a', 'b'); /// { '1': 'b1', '2': 'b2', '3': undefined }
* @param sourceData 源数据
* @param key 分组的 key
* @param vKey 值的 key,默认为整个值。
* @returns
* @category Array-数组相关
*/
export declare function data2Obj(sourceData: {
[key: string]: any;
}[], key: string, vKey?: string): {
[key: string]: any;
};
/**
* 数组对象转数组值
* @example
* data2Arr([{a: 1, b: 2}, {a: 3}, {b: 1}], 'a'); /// [1, 3]
* @param sourceData 源数据
* @param key 取值的 key
* @returns
* @category Array-数组相关
*/
export declare function data2Arr(sourceData: {
[key: string]: any;
}[], key: string): any[];
/**
* 数组对象转换为对象数组,需确保源数据已经去重哦,否则会暴力去重,最后一条数据有效。
* 一般图表类插件需要此类转换
* @example
* const data = [{ id: 1, name: '张三', score: 98, remark: '语文成绩' }, { id: 3, name: '王五', score: 98 }, { id: 3, name: '王五', score: 99, remark: '最后一条有效成绩' }, { id: 2, name: '李四', score: 100 }];
* arrObj2objArr(data, 'id'); /// {"id": [1, 2, 3], "name": ["张三", "李四", "王五"], "score": [98, 100, 99], "remark": ["语文成绩", null, "最后一条有效成绩"]}
* @param data 源数据
* @param key 用于转换的 key
* @returns
* @category Array-数组相关
*/
export declare function arrObj2objArr(data: {
[key: string]: any;
}[], key: string): {
[key: string]: any[];
};
/**
* 数组去重
* @example
* unique([1, 2, 3, 1, 2, 3]); /// [1, 2, 3]
* unique([{id: 1, value: 'hello'}, {id: 2, value: 'world'}, {id: 2, value: 'world', others: true}], (a, b) => a.id === b.id); /// [id1, id2 带 true]
* @param arr 数组
* @param filter 过滤逻辑
* @returns
* @category Array-数组相关
*/
export declare function unique(arr: any[], filter?: any): any[];
/**
* 返回排序回调函数(支持中文,不支持一级数据与混合类型。)
* @example
* sortCallBack('createDt', true); /// 按照 createDt 升序排列
* const arr = [{name: '666'}, {name: '333'}]
* arr.sort(sortCallBack('name')); /// [{name: '333'}, {name: '666'}]
* arr.sort(sortCallBack('name', false)); /// [{name: '666'}, {name: '333'}]
* @param key 排序的字段
* @param isAscend 是否升序
* @returns
* @category Array-数组相关
*/
export declare function sortCallBack(key: string, isAscend?: boolean): any;
/**
* 数组乱序
* @example
* arrayShuffle([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); /// [5, 9, 1, 10, 2, 6, 4, 8, 3, 7]
* @param arr 数组
* @returns
* @category Array-数组相关
*/
export declare function arrayShuffle(arr: any[]): any[];
/**
* 数组排序(支持多条件排序+中文)
* @example
* arraySort(["a", "3", 1, 2, "b"]); /// [1, 2, '3', 'a', 'b']
* arraySort(["a", "3", 1, 2, "b"], 'asc'); /// [1, 2, '3', 'a', 'b']
* arraySort(["a", "3", 1, 2, "b"], false); /// ['b', 'a', '3', 2, 1]
* arraySort(["a", "3", 1, 2, "b"], 'desc'); /// ['b', 'a', '3', 2, 1]
* let arr1 = [{ a: 'a', b: 'b', c: '张三', d: 1 }, { a: 'c', b: 'd', c: '李四', d: 2 }, { a: 'e', b: 'f', c: '王五', d: 3 }];
* arraySort(arr1, false, 'a'); /// e - c - a
* arraySort(arr1, false, ['d', 'c']); /// 3 - 2 - 1
* arraySort(arr1, 'DESC', ['c']); /// 张三 - 王五 - 李四
* @param arr 数组
* @param type 类型
* @param keys 关键字/集合
* @returns
* @category Array-数组相关
*/
export declare function arraySort(arr: any[], type?: 'desc' | 'asc' | 'ASC' | 'DESC' | boolean, keys?: string | string[]): any[];
/**
* 返回排序回调函数(也支持中文、多个字段、混合类型)
* @example
* ['a', '3', 1, 2, 'b'].sort(sortBy('', false)); /// ['b', 'a', '3', 2, 1]
* ['a', '3', 1, 2, 'b'].sort(sortBy()); /// [1, 2, '3', 'a', 'b']
* sortBy('createDt'); /// 按照 createDt 升序排列
* sortBy(['name', 'age'], false); /// 按照 name + age 降序排列
* @param keys 排序的字段/集合
* @param isAscend 是否升序
* @returns
* @category Array-数组相关
*/
export declare function sortBy(keys?: string | string[], isAscend?: boolean): any;
/**
* 填充数组空值,取前后值得中间数。
* @example
* arrayFill([1, undefined, 3, undefined, 4]); /// [1, 2, 3, 3.5, 4]
* arrayFill([1, undefined, 3, undefined, 4], 0); /// [1, 2, 3, 4, 4]
* arrayFill([1, undefined, 3, undefined, 10.55], 2); /// [1, 2, 3, 6.78, 10.55]
* @param arr 数组
* @param n 保留小数位
* @returns
* @category Array-数组相关
*/
export declare function arrayFill(arr: any[], n?: number): number[];
/**
* 将数组拆分为多个子数组(每组 n 个元素)
* @example
* const arr = [1, 2, 3, 4, 5, 6, 7];
* console.log(arrayChunk(arr, 3)); ///[ [1, 2, 3], [4, 5, 6], [7] ]
* console.log(arrayChunk(arr, 8)); ///[ [1, 2, 3, 4, 5, 6, 7] ]
* @param arrayData 原始数组
* @param n 每组元素个数
* @returns
* @category Array-数组相关
*/
export declare function arrayChunk(arrayData: any[], n: number): any[][];
//# sourceMappingURL=index.d.ts.map