mergeDeepRight()
mergeDeepRight<
T,U>(left,right):T&U
Recursively merges objects, with right values taking precedence.
Arrays are replaced, not merged.
Type Parametersโ
T: T extends AnyRecordโ
The type of the left object.
U: U extends AnyRecordโ
The type of the right object.
Parametersโ
left: Tโ
The left object (fallback values).
right: Uโ
The right object (takes precedence).
Returns: T & Uโ
A new deeply merged object.
See Alsoโ
Sinceโ
2.0.0
Noteโ
Symbol keys are included via Reflect.ownKeys.
Performanceโ
O(n) time & space where n is total number of properties. Early returns for null/undefined/primitives/arrays. Uses spread operator for shallow copy.
Exampleโ
const left = { user: { name: 'John', age: 30 } };
const right = { user: { name: 'Jane', email: 'jane@example.com' } };
mergeDeepRight(left, right);
// => { user: { name: 'Jane', age: 30, email: 'jane@example.com' } }
// Arrays: right wins
mergeDeepRight({ items: [1, 2] }, { items: [3, 4] });
// => { items: [3, 4] }
Use Casesโ
Merge with override precedence ๐โ
Merge objects recursively where the second object (right) overrides the first. Essential for applying configuration overrides or patching state.
const finalConfig = mergeDeepRight(defaultConfig, userConfig);
// userConfig overrides defaults
Patch complex stateโ
Apply a partial update to a deep state tree. Critical for reducer logic in state management.
const nextState = mergeDeepRight(currentState, {
ui: { sidebar: { isOpen: true } } // Only updates isOpen, preserves other ui props
});
Combine nested defaultsโ
Merge layers of configuration where inner layers override outer ones.
const effective = mergeDeepRight(globalProps, localProps);