js-merge-object

Recursively merge nested JS objects

Usage no npm install needed!

<script type="module">
  import jsMergeObject from 'https://cdn.skypack.dev/js-merge-object';
</script>

README

js-merge-object

Utility method to merge nested JS objects recursively.

Description

This lightweight util method will merge objects; nested and if required recursively.

merge( { a: { c: 2 } }, { a: { b: 3 } }, { c: 3 }, { a: { k: 5 }})
// { a: { c: 2, b: 3, k: 5 }, c: 3 }

To add a flavour, this method will handle arrays as a special case.

If merge encounters,

  • Two arrays with the same key, if arrays have similar types arrays will be concatenated.
  • An array and non-array element found with the same key, if type of non-array is similar to type of elements in the array, non-array element will be pushed to the array.
merge({ a : [1 ,2 ]}, { a: [5, 7] });
// { a: [1, 2, 5, 7] } -> Arrays with same types will concat

merge({a : [1 ,2 ]}, { a: 5 });
// { a: [1, 2, 5 ] } -> Item will be pushed to an array with same type

Add this to your application

npm i js-merge-object

How to use

const merge = require('js-merge-object');

merge({ a: { b: 2 }}, {a: { c: 4 }});
// {a: { b: 2, c: 4 } } -> Same key object are merged

merge( { a: 1}, { a: 3 });
// { a: 3 } -> Key found at last will override others

merge({ a : [1 ,2 ]}, { a: [5, 7] });
// { a: [1, 2, 5, 7] } -> Arrays with same types will concat