Skip to content

Home > @zero-dim/utils > accessOrSetNestedValue

accessOrSetNestedValue() function

访问或设置嵌套对象的值

Signature:

typescript
export declare function accessOrSetNestedValue(formData: any, path: string, value?: undefined): {
    formData: any;
    value: any;
};

Parameters

Parameter

Type

Description

formData

any

要操作的源对象

path

string

点分隔的路径字符串,支持数组索引,如 'user.addresses[0].street'

value

undefined

(Optional) 要设置的值,默认为 undefined

**Returns:**

{ formData: any; value: any; }

{{ formData: object, value: any }} 包含更新后的表单数据和设置的值的对象

Remarks

  • 创建源对象的深拷贝进行操作 - 支持深层路径访问和设置 - 支持数组索引操作 - 自动创建不存在的路径 - 返回更新后的对象和设置的值

Example

typescript
// 示例1: 基础对象操作
const user = { profile: { name: 'John' } };
const result1 = accessOrSetNestedValue(user, 'profile.age', 25);
// 返回: {
//   formData: { profile: { name: 'John', age: 25 } },
//   value: 25
// }

// 示例2: 数组操作
const org = { departments: [] };
const result2 = accessOrSetNestedValue(org, 'departments[0].name', 'IT');
// 返回: {
//   formData: { departments: [{ name: 'IT' }] },
//   value: 'IT'
// }

// 示例3: 复杂嵌套结构
const data = {
  users: [{
    profile: { address: {} }
  }]
};
const result3 = accessOrSetNestedValue(
  data,
  'users[0].profile.address.street',
  '123 Main St'
);
// 返回: {
//   formData: {
//     users: [{
//       profile: {
//         address: {
//           street: '123 Main St'
//         }
//       }
//     }]
//   },
//   value: '123 Main St'
// }

// 示例4: 访问现有值
const config = {
  settings: {
    theme: 'dark'
  }
};
const result4 = accessOrSetNestedValue(config, 'settings.theme');
// 返回: {
//   formData: { settings: { theme: 'dark' } },
//   value: 'dark'
// }