@lidick/mt-react-view
Version: 
A React component library
139 lines (138 loc) • 5.38 kB
TypeScript
type AnyObject = Record<string, any>;
/**
 * 多维数组转一维数组
 *
 * @param arr
 */
export declare const recursion: <T extends AnyObject>(arr: T[]) => T[];
/**
 * 数组转树形结构
 *
 * @param arr 原始数组
 * @param pid 父级id的值
 * @param arrayPidKey 父级id的key
 * @param childKeyName 转换之后的子集children的key
 */
export declare const arrayToTree: <T extends AnyObject>(arr: T[], pid: string, arrayPidKey?: keyof T, childKeyName?: string) => T[];
/**
 * 树形结构转数组
 *
 * @param tree 树形结构数组
 * @param arrayPidKey 父级id的key
 * @param childKeyName 树形结构的子集children的key
 */
export declare const treeToArray: <T extends AnyObject>(tree: T[], arrayPidKey?: keyof T, childKeyName?: string) => T[];
/**
 * 判断指定字符串是否包含在指定数组元素中的部分,有则替换为空
 * 比如:a 是否在arr数组中的部分为:['ab', 'bc', 'cd', 'da'],则替换为['b', 'bc', 'cd', 'd']
 *
 * @param str
 * @param arr
 */
export declare const replaceArrayElementsInString: (str: string, arr: Array<string>) => string;
/**
 * 判断数组中的元素是否在字符串值中
 * 比如:abc是否在['ab', 'bc', 'cd', 'da']中,其abc包含ab则返回true
 *
 * @param str
 * @param arr
 */
export declare const checkStrContainsElement: (str: string, arr: string[]) => boolean;
/**
 * 判断key对应的val是否在数组中
 * 比如 指定key:status, value:1的数据是否在数组[{id:1, name: 'Alice', status: 1},{id:2, name: 'Bob', status: 2}]中,
 * 其存在则返回true
 *
 * @param arr
 * @param key
 * @param val
 * @returns {*}
 */
export declare const checkKeyValueIsInArr: <T extends AnyObject>(arr: T[], key: keyof T, val: any) => boolean;
/**
 * 根据对象数组中元素的属性和对应属性值获取对应的元素
 * 比如 指定attr:status, value:1的数据是否在数组[{id:1, name: 'Alice', status: 1},{id:2, name: 'Bob', status: 2}]中,
 * 其存在则返回{id:1, name: 'Alice', status: 1}
 * 找不到则返回null
 *
 * @param arr
 * @param attr
 * @param value
 */
export declare const getObjInArrByAttrVal: <T extends AnyObject>(arr: T[], attr: keyof T, value: any) => T | null;
/**
 * 根据指定属性判断对象是否存在对象数组中
 * 比如 指定object:{id:2, name: 'Bob', status: 2},filed:age的数据是否
 * 在数组[{id:1, name: 'Alice', status: 1},{id:2, name: 'Bob', status: 2, age: 1}]中,
 * 其存在{id:2, name: 'Bob', status: 2, age:1}则返回true
 *
 * @param object
 * @param objectArr
 * @param filed
 */
export declare const checkObjectContainsArray: <T extends AnyObject>(object: T, objectArr: T[], filed: keyof T) => boolean;
/**
 * 从对象数组中按照指定key和value查找信息
 * 比如 指定key:status, value:1的数据是否在数组[{id:1, name: 'Alice', status: 1},{id:2, name: 'Bob', status: 2}]中,
 * 其存在则返回{id:1, name: 'Alice', status: 1}
 *
 * @param arr
 * @param key
 * @param value
 */
export declare const findInfoInArrayByKeyValue: <T extends AnyObject>(arr: T[], key: keyof T, value: any) => T | undefined;
/**
 * 基本类型数组去重(适用于string、number、boolean等)
 * 保留了原数组的元素顺序
 * 示例
 * const numberArray = [1, 2, 3, 2, 1, 4, 5, 3];
 * const uniqueNumbers = uniqueArray(numberArray);
 * console.log('数字数组去重:', uniqueNumbers); // [1, 2, 3, 4, 5]
 *
 * const stringArray = ['a', 'b', 'a', 'c', 'b', 'd'];
 * const uniqueStrings = uniqueArray(stringArray);
 * console.log('字符串数组去重:', uniqueStrings); // ['a', 'b', 'c', 'd']
 *
 * const mixedArray = [1, '1', true, true, null, null, undefined, undefined];
 * const uniqueMixed = uniqueArray(mixedArray);
 * console.log('混合类型数组去重:', uniqueMixed); // [1, '1', true, null, undefined]
 *
 * @param arr
 */
export declare const uniqueArray: <T extends string | number | boolean | null | undefined>(arr: T[]) => T[];
/**
 * 数组对象去重函数
 * 用法示例:
 * 1. 单属性去重示例
 * const users = [
 *   { id: 1, name: 'Alice' },
 *   { id: 2, name: 'Bob' },
 *   { id: 1, name: 'Alice' }, // 与第一个对象id重复
 *   { id: 3, name: 'Charlie' }
 * ];
 * const uniqueUsersById = uniqueObjectArray(users, 'id');
 * console.log('按id去重结果:', uniqueUsersById);
 * 按id去重结果: [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' } ]
 *
 * 2. 多属性去重示例
 * const products = [
 *   { id: 1, name: 'Phone', color: 'black' },
 *   { id: 1, name: 'Phone', color: 'white' }, // id相同但color不同,不算重复
 *   { id: 1, name: 'Phone', color: 'black' }, // 与第一个对象完全相同
 *   { id: 2, name: 'Laptop', color: 'silver' }
 * ];
 * const uniqueProducts = uniqueObjectArray(products, ['id', 'name', 'color']);
 * console.log('按多属性去重结果:', uniqueProducts);
 * 按多属性去重结果:
 * [
 *  { id: 1, name: 'Phone', color: 'black' },
 *  { id: 1, name: 'Phone', color: 'white' },
 *  { id: 2, name: 'Laptop', color: 'silver' }
 * ]
 *
 * @param arr 需要去重的数组
 * @param keys 用于判断重复的属性,可以是单个属性字符串或多个属性组成的数组
 * @returns 去重后的新数组
 */
export declare const uniqueObjectArray: <T extends AnyObject>(arr: T[], keys: keyof T | (keyof T)[]) => T[];
export {};