Skip to main content
Version: Next

mergeObjects

Using

Deeply merges two plain objects. Properties from the first object take precedence over the second.

Returns a new merged object without mutating the inputs.

Demo - use JSON
mergeObjects(
,
)
{"d":9,"a":1,"b":2,"c":3}

Arguments

ArgumentTypeDescriptionExample
obj1objectThe primary object whose properties take priority.{}
{ some: "any" }
obj1objectThe secondary object whose properties are merged if not present in obj1.{}
{ value: "3", c: false }

Returns

object — A new object containing all properties from obj1 and obj2, with obj1's values overriding.

Examples

// Basic merge:
mergeObjects({ a: 1, b: 2 }, { b: 3, c: 4 });
// { a: 1, b: 2, c: 4 }

// Deep merge nested objects:
mergeObjects({ nested: { x: 10, y: 20 } }, { nested: { y: 30, z: 40 }, extra: 5 });
// { nested: { x: 10, y: 20, z: 40 }, extra: 5 }

// Merge arrays and additional properties:
mergeObjects({ list: [1, 2] }, { list: [3, 4], meta: { valid: true } });
// { list: [1, 2], meta: { valid: true } }

// Merge with Map and Set:
const map1 = new Map([['a', 1]]);
const set2 = new Set([2, 3]);
mergeObjects({ data: map1, tags: new Set(['x']) }, { data: new Map([['b', 2]]), tags: set2 });
// { data: Map { 'a' => 1, 'b' => 2 }, tags: Set { 'x', 2, 3 } }

// Deep merge with multi-level nesting and arrays:
mergeObjects(
{ config: { levels: [{ id: 1, val: 'one' }] } },
{ config: { levels: [{ id: 2, val: 'two' }], debug: true } },
);
// { config: { levels: [{ id: 1, val: 'one' }], debug: true } }

Resources

📦 Since:1.3.0
📦 Last updated:1.3.0
📦 Available in:1.3.0