Deep merge objects with custom merging logic

npm install deep-merge
2 downloads in the last day
18 downloads in the last week
79 downloads in the last month


build status dependency status

browser support

Deep merge objects with custom merging logic


When you create a merge "strategy" you can configure how two values should merge when they have the same key. For example you may want them to be combined into a single array.

var DeepMerge = require("deep-merge")
var assert = require("assert")

var merge = DeepMerge(function mergeStrategy(target, source, key) {
    return [].concat(target, source)

var res = merge({
    foo: ["hello"]
}, {
    foo: "goodbye"

assert.deepEqual(res, { foo: ["hello", "goodbye"] })

By default objects will recursely call your mergeStrategy on your the values for a key and construct a new object with the key and the value returned from your merge

Merging multiple objects

var DeepMerge = require("deep-merge/multiple")
var merge = DeepMerge(function (a, b) {
    return b

var obj = merge([
    { a: "a" },
    { b: "b" },
    { c: { d: "d" } },
    { c: { e: "e" } }

assert.deepEqual(obj.c, { d: "d", e: "e" })


npm install deep-merge


  • Raynos

MIT Licenced

npm loves you