Napoleon's Pixelated Mugshot

    deep-object-diff
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.9 • Public • Published

    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

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

    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

    Install

    npm i deep-object-diff

    DownloadsWeekly Downloads

    2,087,049

    Version

    1.1.9

    License

    MIT

    Unpacked Size

    23.3 kB

    Total Files

    24

    Last publish

    Collaborators

    • mattphillips