UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

66 lines (65 loc) 2.5 kB
interface TransformObjectValue { <V, R>(arr: V[], fn: (value: V, index: number) => R, deep: false): R[]; <V, R>(arr: V[], fn: (value: any, index: number) => R, deep?: boolean): R[]; <T extends object, R>(obj: T, fn: (value: T[keyof T], key: keyof T) => R, deep: false): Record<keyof T, R>; <T extends object, R>(obj: T, fn: (value: T[keyof T] extends object ? any : T[keyof T], key: T[keyof T] extends object ? any : keyof T) => R, deep?: boolean): Record<keyof T, R>; <T>(obj: T, fn: (...args: any[]) => any): T; } /** * 创建一个转换值的新对象或数组。 * * 例如 antd Form 中的设置表单值时,如果值为空字符串可能需要转为 `undefined` ,才不影响表单的初始值。 * * @alias module:Processor.transformObjectValue * @since 4.23.0 * @param {Array | Object} data 要转换值的普通对象或数组 * @param {Function} fn 遍历普通对象或数组键值方法 * @param {boolean} [deep=true] 深度遍历,检测值为普通对象或数组时递归处理。默认`true` * @returns {Array | Object} 如果是普通对象或数组,返回一个新的对象或数组,否则返回自身 * @example * * const data1 = { foo: 'bar', baz: 42 } * // 数字转为字符串 * transformObjectValue(data1, value => { * if(typeof value === 'number'){ * return String(value) * } * return value; * }); * // { foo: 'bar', baz: '42' } * * const data2 = [1,2,3,4]; * // 数字转为字符串 * transformObjectValue(data2, value=>{ * if(typeof value === 'number'){ * return String(value) * } * }); * // ['1', '2', '3', '4'] * * // 嵌套普通对象或数组 * const data3 = { foo: 'bar', baz: 42, c: [1,2,3,4], d: '' } * // 数字转为字符串,空字符串转为undefined * transformObjectValue(data3, value=>{ * if(typeof value === 'number'){ * return String(value); * } * retrun value === '' ? undefined : value * }); * // { foo: 'bar', baz: '42', ['1', '2', '3', '4'], d: undefined } * * // 数组的值不处理,对象值为数字转为字符串,空字符串转为undefined * transformObjectValue(data3, (value, key)=>{ * if(typeof key === 'number'){ * return value; * } * if(typeof value === 'number'){ * return String(value); * } * retrun value === '' ? undefined : value * }); * // { foo: 'bar', baz: '42', [1, 2, 3, 4], d: undefined } * */ declare const transformObjectValue: TransformObjectValue; export default transformObjectValue;