UNPKG

js-xxx

Version:

前端 JavaScript 常用函数/工具/方法库

133 lines 5.4 kB
/** * 数组对象转对象,按照指定的 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