What is just-diff?
The 'just-diff' npm package is a lightweight utility for computing the difference between two JavaScript objects. It provides a simple and efficient way to identify changes, additions, and deletions between objects.
What are just-diff's main functionalities?
Compute Differences
This feature allows you to compute the differences between two objects. The result is an array of changes that describe how to transform the first object into the second.
const diff = require('just-diff');
const obj1 = { a: 1, b: 2 };
const obj2 = { a: 1, b: 3, c: 4 };
const differences = diff(obj1, obj2);
console.log(differences);
Other packages similar to just-diff
deep-diff
The 'deep-diff' package provides similar functionality to 'just-diff' but with more detailed change tracking, including nested objects and arrays. It offers a more comprehensive set of tools for deep comparison.
diff
The 'diff' package is a general-purpose text and object diffing library. It supports a wide range of diffing operations, including line-by-line and word-by-word comparisons, making it more versatile but also more complex than 'just-diff'.
lodash.isequal
The 'lodash.isequal' function from the Lodash library provides deep equality checks between objects. While it doesn't provide a diff per se, it is useful for determining if two objects are equivalent, which can be a complementary operation to diffing.
just-diff
Part of a library of zero-dependency npm modules that do just do one thing.
Guilt-free utilities for every occasion.
🍦 Try it
npm install just-diff
yarn add just-diff
Return an object representing the difference between two other objects
Pass converter to format as http://jsonpatch.com
import {diff} from 'just-diff';
const obj1 = {a: 4, b: 5};
const obj2 = {a: 3, b: 5};
const obj3 = {a: 4, c: 5};
diff(obj1, obj2);
[
{ "op": "replace", "path": ['a'], "value": 3 }
]
diff(obj2, obj3);
[
{ "op": "remove", "path": ['b'] },
{ "op": "replace", "path": ['a'], "value": 4 }
{ "op": "add", "path": ['c'], "value": 5 }
]
import {diff, jsonPatchPathConverter} from 'just-diff'
diff(obj1, obj2, jsonPatchPathConverter);
[
{ "op": "replace", "path": '/a', "value": 3 }
]
diff(obj2, obj3, jsonPatchPathConverter);
[
{ "op": "remove", "path": '/b' },
{ "op": "replace", "path": '/a', "value": 4 }
{ "op": "add", "path": '/c', "value": 5 }
]
const obj4 = {a: 4, b: [1, 2, 3]};
const obj5 = {a: 3, b: [1, 2, 4]};
const obj6 = {a: 3, b: [1, 2, 4, 5]};
diff(obj4, obj5);
[
{ "op": "replace", "path": ['a'], "value": 3 }
{ "op": "replace", "path": ['b', 2], "value": 4 }
]
diff(obj5, obj6);
[
{ "op": "add", "path": ['b', 3], "value": 5 }
]
const obj7 = {a: 4, b: {c: 3}};
const obj8 = {a: 4, b: {c: 4}};
const obj9 = {a: 5, b: {d: 4}};
diff(obj7, obj8);
[
{ "op": "replace", "path": ['b', 'c'], "value": 4 }
]
diff(obj8, obj9);
[
{ "op": "replace", "path": ['a'], "value": 5 }
{ "op": "remove", "path": ['b', 'c']}
{ "op": "add", "path": ['b', 'd'], "value": 4 }
]