Skip to content

mergeObjects (对象合并)

mergeObjects 函数用于将多个源对象的属性合并到目标对象中。它支持深度合并对象,即如果目标对象中已有属性且其值为对象,则将源对象中对应属性的对象递归合并到目标对象中。

函数调用方式

javascript
mergeObjects(target, ...sources)

参数说明

参数名类型描述
targetObject需要合并属性的目标对象,必须是一个非空对象。
sourcesObject (可变参数)一个或多个源对象,将其属性合并到目标对象中。每个源对象也必须是非空对象。

返回值

返回合并后的目标对象 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 函数提供了一种灵活的方式来合并多个对象的属性,并支持深度合并。当需要合并复杂的对象结构时,该函数非常有用,同时也确保了输入的有效性和安全性。