If true
, arrays are concatenated. If false
(default), arrays are replaced.
One or more objects to deeply merge.
A new object containing deeply merged keys and values.
const defaultConfig = { env: "dev", features: ["a"], flags: { debug: true } };
const userConfig = { env: "prod", features: ["b"], flags: { beta: true } };
const result = mergeObj(defaultConfig, userConfig);
// {
// env: "prod",
// features: ["b"], // replaced, not merged
// flags: { debug: true, beta: true }
// }
const result2 = mergeObj(true, defaultConfig, userConfig);
// {
// env: "prod",
// features: ["a", "b"], // arrays merged
// flags: { debug: true, beta: true }
// }
Deeply merges multiple source objects into one.
Object properties are merged recursively.
If a key exists in multiple objects:
appendArray
istrue
, arrays are concatenated.appendArray
isfalse
(default), later arrays replace earlier ones.Objects passed later in the list of sources have higher priority. For example, values in the last object will override previous ones.
If you want to give priority to a specific object, pass it last.