@brickify/m-merge
v1.0.4
Published
Deep merge everyting using powerful merging strategy
Downloads
11
Maintainers
Readme
Module Merge Objects
Carry out a "deep merge" to merge everyting using this new powerful merging strategy.
Statistics
Social
Project Health
Install
$ npm install @brickify/m-merge
Options
Merging strategy
{
immutable: false, // Returns a new Object
keepExistingValues: true, // Older properties are kept even if they didn't exist in the new object
eraseMethods: true, // Override or keep previous methods
eraseValues: true, // Override string || boolean || undefined || null
eraseNotSameType: true, // Override if not of the same type without a diff
eraseArray: false, // Direct Override Arrays
eraseObject: false // Direct Override Objects
}
Usage
var merge = require('@brickify/m-merge');
// Merge if not of the same type
var a = 1;
var b = null;
console.log(merge(a, b));
// -> null
// Merge if the object(s) is not immutable
var a = {foo: 'foo'};
var b = {bar: 'bar'};
console.log(merge(a, b));
// -> {foo: 'foo'}
// Merge object(s) and make it immutable
var a = {foo: 'foo'};
var b = {bar: 'bar'};
console.log(merge(a, b, {immutable: true}));
// -> {foo: 'foo'}
// Merge object(s) and erase the existing objects
var a = {foo: 'foo'};
var b = {bar: 'bar'};
console.log(merge(a, b, {eraseObject: true}));
// -> {bar: 'bar'};
// Merge object(s) without keeping existing values
var a = {foo: 'foo'};
var b = {bar: 'bar2'};
console.log(merge(a, b, {keepExistingValues: false}));
// -> {bar: 'bar2'}
// Merge object(s) keeping existing values
var a = {foo: 'foo'};
var b = {bar: 'bar'};
console.log(merge(a, b));
// -> {foo: 'foo', bar: 'bar'}
// Merge object(s)
var a = {foo: 'foo'};
var b = {foo: 'foo2', bar: 'bar'};
console.log(merge(a, b));
// -> {foo: 'foo2', bar: 'bar'};
// Merge object(s) without erasing the existing values
var a = {foo: 'foo'};
var b = {foo: 'foo2', bar: 'bar'};
console.log(merge(a, b, {eraseValues: false}));
// -> {foo: 'foo', bar: 'bar'}
// Merge array < length
var a = [0];
var b = [0, 1];
console.log(merge(a, b));
// -> [0]
// Merge array > length
var a = [0, 1];
var b = [0];
console.log(merge(a, b));
// -> [0, 1]
// Merge array < length and not keepExistingValues
var a = [0];
var b = [0, 1];
console.log(merge(a, b, {keepExistingValues: false}));
// -> [0]
// Merge array > length and not keepExistingValues
var a = [0, 1];
var b = [0];
console.log(merge(a, b, {keepExistingValues: false}));
// -> [0, 1]
// Merge array not immutable
var a = [0];
var b = [0];
console.log(merge(a, b));
// -> [0]
// Merge array immutable
var a = [0, 1, 2];
var b = [0, 1, 2, 3];
var c = merge(a, b, {immutable: true});
console.log(c);
// -> [0, 1, 2, 3]
// Merge methods
var a = function () {
};
a.foo = true;
var b = function () {
};
console.log(merge(a, b));
// -> b && b.foo
// eraseArray
var a = [0, 1, 2];
var b = [0, 1, 2, 3];
console.log(merge(a, b, {eraseArray: true}));
// -> [0, 1, 2, 3]
// eraseArray immutable
var a = [0, 1, 2];
var b = [0, 1, 2, 3];
var c = merge(a, b, {eraseArray: true, immutable: true});
console.log(c);
// -> [0, 1, 2, 3]
// eraseObject
var a = {foo: 'foo'};
var b = {bar: 'bar'};
console.log(merge(a, b, {eraseObject: true}));
// -> {bar: 'bar'}
// eraseObject immutable
var a = {foo: 'foo'};
var b = {bar: 'bar'};
var c = merge(a, b, {eraseObject: true, immutable: true});
console.log(c);
// -> {bar: 'bar'}
Input
merge(ObjectA, ObjectB ,{...options});