mergeObjects (对象合并)
mergeObjects
函数用于将多个源对象的属性合并到目标对象中。它支持深度合并对象,即如果目标对象中已有属性且其值为对象,则将源对象中对应属性的对象递归合并到目标对象中。
函数调用方式
javascript
mergeObjects(target, ...sources)
参数说明
参数名 | 类型 | 描述 |
---|---|---|
target | Object | 需要合并属性的目标对象,必须是一个非空对象。 |
sources | Object (可变参数) | 一个或多个源对象,将其属性合并到目标对象中。每个源对象也必须是非空对象。 |
返回值
返回合并后的目标对象 target
。
异常处理
- 如果
target
不是一个非空对象,将抛出一个错误:Target must be a non-null object
。 - 如果任何一个
source
不是一个非空对象,将抛出一个错误:Source must be a non-null object
。
示例代码
基本用法
javascript
const target = { a: 1, b: 2 };
const source1 = { b: 3, c: 4 };
const source2 = { d: 5 };
const result = mergeObjects(target, source1, source2);
console.log(result); // 输出: { a: 1, b: 3, c: 4, d: 5 }
深度合并对象
javascript
const target = { a: 1, b: { x: 10, y: 20 } };
const source = { b: { y: 30, z: 40 }, c: 50 };
const result = mergeObjects(target, source);
console.log(result); // 输出: { a: 1, b: { x: 10, y: 30, z: 40 }, c: 50 }
输入验证示例
javascript
try {
mergeObjects(null, { a: 1 }); // 将抛出错误
} catch (error) {
console.error(error.message); // 输出: Target must be a non-null object
}
try {
mergeObjects({}, null); // 将抛出错误
} catch (error) {
console.error(error.message); // 输出: Source must be a non-null object
}
合并多个源对象
javascript
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };
const source3 = { d: 4, e: { f: 5 } };
const result = mergeObjects(target, source1, source2, source3);
console.log(result); // 输出: { a: 1, b: 2, c: 3, d: 4, e: { f: 5 } }
结论
mergeObjects
函数提供了一种灵活的方式来合并多个对象的属性,并支持深度合并。当需要合并复杂的对象结构时,该函数非常有用,同时也确保了输入的有效性和安全性。