UNPKG

@lidick/mt-react-view

Version:

A React component library

139 lines (138 loc) 5.38 kB
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 {};