Get the minimal patch to extend objectA with to transform it into objectB
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 server, to save bits (because you'r 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
var objectDiff = require('object-diff');
var a = {
speed: 4,
power: 54,
height: undefined,
level: 1,
};
var b = {
speed: 4, // unchanged
power: 22, // changed
level: undefined, // changed
weight: 10, // added
};
objectDiff(a, b);
/*
{
power: 22,
level: undefined,
weight: 10,
}
*/
MIT © src.agency / Thomas Jensen