Skip to content

updateWith

INFO

此函数仅在 es-toolkit/compat 中可用,原因是出于兼容性考虑。它要么有替代的原生 JavaScript API,要么尚未完全优化。

es-toolkit/compat 导入时,此函数的行为与 lodash 完全相同,并提供相同的功能。

使用 updater 函数返回的值更新对象指定路径上的值。当路径的某部分不存在时,可以通过 customizer 函数指定如何创建新对象。

签名

typescript
function updateWith<T extends object | null | undefined>(
  obj: T,
  path: PropertyKey | readonly PropertyKey[],
  updater: (value: unknown) => unknown,
  customizer: (value: unknown) => unknown
): T;

参数

  • obj (T): 要修改的对象。
  • path (PropertyKey | readonly PropertyKey[]): 要更新的属性路径。
  • updater ((value: unknown) => unknown): 生成更新值的函数。
  • customizer ((value: unknown) => unknown): 定制更新过程的函数。

返回值

(T): 修改后的对象。

示例

typescript
import { updateWith } from 'es-toolkit/compat';

const object = { a: [{ b: { c: 3 } }] };

// 使用定制器函数创建自定义路径结构
updateWith(object, '[0].a.b.c', n => (n as number) + 1, customizer);
// => { '0': { a: { b: { c: 4 } } }, a: [{ b: { c: 3 } }] }

function customizer(value: unknown) {
  if (value == null) {
    return {};
  }
  return value;
}

采用 MIT 许可证发布。