Deep merge any objects.
Play with the lib here: https://codesandbox.io/s/jalik-deep-extend-demo-wyeo99?file=/src/index.js
npm i -P @jalik/deep-extend
yarn add @jalik/deep-extend
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"
}
}
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
]
History of releases is in the changelog.
The code is released under the MIT License.