A small JavaScript library that returns the updated difference between two JavaScript objects, including nested objects.
Features:
- Handles values of data types including arrays, strings and integers
- Handles situations where keys are not present in both objects
- Omits keys with null values in both objects
- Returns whole array values of keys in updated objects
npm install updated-obj-diff
Returns top-level and nested updated values
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", type: "electric", measurements: { height: { measurement: 0.4, unit: "m", }, weight: { measurement: 6, unit: "kg", }, }, }; const pokemon2 = { species: "raichu", type: "electric", measurements: { height: { measurement: 31, unit: "in", }, weight: { measurement: 30, unit: "kg", }, }, }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", measurements: { height: { measurement: 31, unit: "in", }, weight: { measurement: 30, }, }, }; */
Returns whole updated arrays
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", moves: { level_up: ["quick attack", "slam", "spark"], machine: ["frustration"], }, }; const pokemon2 = { species: "raichu", moves: { level_up: ["quick attack"], machine: ["frustration", "giga impact", "hyper beam"], }, }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", moves: { level_up: ["quick attack"], machine: ["frustration", "giga impact", "hyper beam"], }, }; */
Returns new keys and values
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", }; const pokemon2 = { species: "raichu", thunder_stone: true, }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", thunder_stone: true, }; */
Returns null values for missing keys
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", mascot: true, }; const pokemon2 = { species: "raichu", }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", mascot: null, }; */
Returns null for updated null values that were not previously null
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", dynamax: { gigantamax: true, }, }; const pokemon2 = { species: "raichu", dynamax: null, }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", dynamax: null, }; */
Omits keys that have the value of null in one object, and do not exist in the other object
const updatedDiff = require("updated-obj-diff"); const pokemon1 = { species: "pikachu", old_key: null, }; const pokemon2 = { species: "raichu", new_key: null, }; console.log(updatedDiff(pokemon1, pokemon2)); /* { species: "raichu", }; */