Home > @zero-dim/utils > setValueAtPath
setValueAtPath() function
根据路径设置对象中的值
Signature:
typescript
export declare function setValueAtPath(obj: any, path: string, value?: any): void;
Parameters
Parameter | Type | Description |
---|---|---|
obj | any | 要设置值的目标对象 |
path | string | 点分隔的路径字符串,支持数组索引,如 'user.addresses[0].street' |
value | any | (Optional) 要设置的值,默认为 undefined |
void
Remarks
- 支持设置深层对象属性 - 支持数组索引设置 - 自动创建不存在的路径 - 保护已有值不被 undefined 覆盖 - 支持任意类型的值设置
Example
typescript
// 示例1: 基础属性设置
const user = {};
setValueAtPath(user, 'profile.name', 'John Doe');
// 结果: { profile: { name: 'John Doe' } }
// 示例2: 数组操作
const org = {};
setValueAtPath(org, 'departments[0].name', 'IT');
setValueAtPath(org, 'departments[0].employees[0]', { id: 1, name: 'Alice' });
// 结果: {
// departments: [{
// name: 'IT',
// employees: [{ id: 1, name: 'Alice' }]
// }]
// }
// 示例3: 保护已有值
const data = { user: { name: 'John' } };
setValueAtPath(data, 'user.name', undefined);
// 结果: { user: { name: 'John' } } // 已有值不会被 undefined 覆盖
// 示例4: 复杂嵌套设置
const config = {};
setValueAtPath(config, 'database.connections[0].settings.timeout', 1000);
// 结果: {
// database: {
// connections: [{
// settings: {
// timeout: 1000
// }
// }]
// }
// }