Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

lyst/updated-obj-diff

Open more actions menu

Repository files navigation

updated-obj-diff

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

Installation

npm install updated-obj-diff

Usage

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",
  };
*/

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.