deep-object-diff
❄️
Deep diff two JavaScript Objects
A small library that can deep diff two JavaScript Objects, including nested structures of arrays and objects.
Installation
yarn add deep-object-diff
npm i --save deep-object-diff
Functions available:
-
diff(originalObj, updatedObj)
returns the difference of the original and updated objects -
addedDiff(original, updatedObj)
returns only the values added to the updated object -
deletedDiff(original, updatedObj)
returns only the values deleted in the updated object -
updatedDiff(original, updatedObj)
returns only the values that have been changed in the updated object -
detailedDiff(original, updatedObj)
returns an object with the added, deleted and updated differences
Importing
ES6 / Babel:
;
ES5:
const diff addedDiff deletedDiff detailedDiff updatedDiff = ;// ORconst diff = diff;const addedDiff = addedDiff;const deletedDiff = deletedDiff;const detailedDiff = detailedDiff;const updatedDiff = updatedDiff;
Usage:
diff
:
const lhs = foo: bar: a: 'a' 'b' b: 2 c: 'x' 'y' e: 100 // deleted buzz: 'world'; const rhs = foo: bar: a: 'a' // index 1 ('b') deleted b: 2 // unchanged c: 'x' 'y' 'z' // 'z' added d: 'Hello, world!' // added buzz: 'fizz' // updated; console; // =>/*{ foo: { bar: { a: { '1': undefined }, c: { '2': 'z' }, d: 'Hello, world!', e: undefined } }, buzz: 'fizz'}*/
addedDiff
:
const lhs = foo: bar: a: 'a' 'b' b: 2 c: 'x' 'y' e: 100 // deleted buzz: 'world'; const rhs = foo: bar: a: 'a' // index 1 ('b') deleted b: 2 // unchanged c: 'x' 'y' 'z' // 'z' added d: 'Hello, world!' // added buzz: 'fizz' // updated; console; /*{ foo: { bar: { c: { '2': 'z' }, d: 'Hello, world!' } }}*/
deletedDiff
:
const lhs = foo: bar: a: 'a' 'b' b: 2 c: 'x' 'y' e: 100 // deleted buzz: 'world'; const rhs = foo: bar: a: 'a' // index 1 ('b') deleted b: 2 // unchanged c: 'x' 'y' 'z' // 'z' added d: 'Hello, world!' // added buzz: 'fizz' // updated; console; /*{ foo: { bar: { a: { '1': undefined }, e: undefined } }}*/
updatedDiff
:
const lhs = foo: bar: a: 'a' 'b' b: 2 c: 'x' 'y' e: 100 // deleted buzz: 'world'; const rhs = foo: bar: a: 'a' // index 1 ('b') deleted b: 2 // unchanged c: 'x' 'y' 'z' // 'z' added d: 'Hello, world!' // added buzz: 'fizz' // updated; console; /*{ buzz: 'fizz'}*/
detailedDiff
:
const lhs = foo: bar: a: 'a' 'b' b: 2 c: 'x' 'y' e: 100 // deleted buzz: 'world'; const rhs = foo: bar: a: 'a' // index 1 ('b') deleted b: 2 // unchanged c: 'x' 'y' 'z' // 'z' added d: 'Hello, world!' // added buzz: 'fizz' // updated; console; /*{ added: { foo: { bar: { c: { '2': 'z' }, d: 'Hello, world!' } } }, deleted: { foo: { bar: { a: { '1': undefined }, e: undefined } } }, updated: { buzz: 'fizz' }}*/
License
MIT