Skip to content

对象工具 ​

从 @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 导出。