Need help with deep-object-diff?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mattphillips
689 Stars 59 Forks MIT License 83 Commits 20 Opened issues

Description

Deep diffs two objects, including nested structures of arrays and objects, and returns the difference. ❄️

Services available

!
?

Need anything else?

Contributors list

# 21,081
Babel
chain
TypeScr...
faceboo...
69 commits
# 198
nextjs
postman...
graphql...
rng
10 commits
# 568,229
JavaScr...
1 commit
# 573,691
JavaScr...
Shell
1 commit
# 60,027
Electro...
anilist
webpack...
webpack...
1 commit

deep-object-diff

❄️

Deep diff two JavaScript Objects


Build Status Code Coverage version downloads MIT License PRs Welcome

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:

Importing

ES6 / Babel:

js
import { diff, addedDiff, deletedDiff, updatedDiff, detailedDiff } from 'deep-object-diff';

ES5: ``` js const { diff, addedDiff, deletedDiff, detailedDiff, updatedDiff } = require("deep-object-diff");

// OR

const diff = require("deep-object-diff").diff; const addedDiff = require("deep-object-diff").addedDiff; const deletedDiff = require("deep-object-diff").deletedDiff; const detailedDiff = require("deep-object-diff").detailedDiff; const updatedDiff = require("deep-object-diff").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.log(diff(lhs, rhs)); // => /* { 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.log(addedDiff(lhs, rhs));

/* { 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.log(deletedDiff(lhs, rhs));

/* { 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.log(updatedDiff(lhs, rhs));

/* { 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.log(detailedDiff(lhs, rhs));

/* { added: { foo: { bar: { c: { '2': 'z' }, d: 'Hello, world!' } } }, deleted: { foo: { bar: { a: { '1': undefined }, e: undefined } } }, updated: { buzz: 'fizz' } } */

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.