Get the minimal patch to extend objectA with to transform it into objectB
[![npm version][npm-image]][npm-url]
Consider an object retrieved from a server:
{name: 'Peter',age: 26,height: 187,}Now the user changes stuff using some frontend (e.g. a HTML form) and ends with:
{name: 'Peter',age: 27,height: 186,}When he hits save, you only want to send off the changed parts to the servers, to save bits (because you're indeed a programmer), but also to avoid any unnecessary "merge conflicts" at the server.
Imagine two users changing the same object; if they did not change the exact same keys of the object, the last user won't erase the first user's changes - in a lot of cases, that's the expected behavior.
npm install object-diff vardiff=require('object-diff');vara={speed: 4,power: 54,height: undefined,level: 1,};varb={speed: 4,// unchangedpower: 22,// changedlevel: undefined,// changedweight: 10,// added};diff(a,b);/*{ power: 22, level: undefined, weight: 10,}*/// using a custom equality functionvarpast='2016-04-24T10:39:23.419Z';diff.custom({equal: dateAwareComparator,},{then: newDate(past),},{then: newDate(past),});/*{}*/functiondateAwareComparator(a,b){if(ainstanceofDate&&binstanceofDate)returna.getTime()===b.getTime();returna===b;}MIT © src.agency / Thomas Jensen [npm-image]: https://img.shields.io/npm/v/object-diff.svg?style=flat [npm-url]: https://npmjs.org/package/object-diff