Skip to content

jalik/js-deep-extend

Repository files navigation

@jalik/deep-extend

GitHub package.json version Build Status GitHub last commit GitHub issues GitHub npm

Deep merge any objects.

Sandbox

Play with the lib here: https://codesandbox.io/s/jalik-deep-extend-demo-wyeo99?file=/src/index.js

Installing

npm i -P @jalik/deep-extend
yarn add @jalik/deep-extend

Merging deep objects

The following code shows how to merge objects without losing values that are not defined in objects to merge.

import deepExtend from "@jalik/deep-extend";

const defaultColors = {
  cold: {
    blue: '#0000FF',
    green: '#00FF00',
  },
  hot: {
    red: '#FF0000',
    yellow: '#FFFF00',
  },
};

const customColors = {
  cold: {
    blue: '#48C2ED',
  },
  hot: {
    yellow: '#E6CB5F',
  },
};

// Merge all colors into a new object.
// The final colors will have custom blue and yellow colors,
// but the other colors will be the default ones.
const result = deepExtend({}, defaultColors, customColors);

The result:

{
  "cold": {
    "blue": "#48C2ED",
    "green": "#00FF00"
  },
  "hot": {
    "red": "#FF0000",
    "yellow": "#E6CB5F"
  }
}

Merging arrays

See below how it is easy to merge arrays recursively.

import deepExtend from "@jalik/deep-extend";

const a = [1, [2, [3]]];
const b = [undefined, [4, [undefined, 5], 6], 7];

const result = deepExtend([], a, b);

The result:

[
  1,
  [
    4,
    [
      3,
      5
    ],
    6
  ],
  7
]

Changelog

History of releases is in the changelog.

License

The code is released under the MIT License.