Appearance
对象工具
从 @axewo/fin-core/utils 或根入口导入。
| 函数 | 用途 |
|---|---|
deepClone(value) | 深拷贝,支持循环引用、Date、Map、Set 等 |
deepMerge(target, ...sources) | 递归合并,会修改 target;后面的来源覆盖前面的值 |
pickBy(object, predicate) / omitBy(object, predicate) | 按值和键选取、排除属性 |
pick(object, keys) / omit(object, keys) | 选取、排除指定字段 |
isBlank(value) | 判断 null、undefined、空白字符串、空数组、空对象、空 Map/Set |
pruneEmpty(object) | 浅层移除 null、undefined、空字符串,保留 0、false |
get(object, path, defaultValue?) | 按点分隔路径读取 |
set(object, path, value) | 按点分隔路径写入,会修改 object |
flattenObject(object, prefix?) | 将对象展开为点分隔路径映射 |
invert(object) | 交换字符串映射的键和值,重复值会覆盖 |
intersectionKeys(a, b) | 保留 a 中也出现在 b 的键 |
ts
import { deepClone, deepMerge, get, pruneEmpty } from '@axewo/fin-core/utils'
const source = { user: { name: '张三' }, enabled: false }
const copy = deepClone(source)
const result = deepMerge({}, source, { user: { name: '李四' } })
get(result, 'user.name') // '李四'
pruneEmpty({ name: '', count: 0, enabled: false }) // { count: 0, enabled: false }词条合并请使用 mergeLocaleMessages:它不修改输入,并复制词条对象和数组。对象工具不提供文档旧示例中的 merge、has、isEqual、isPlainObject 导出。