Skip to content

A zero-dependency utility for deep equality comparison of JavaScript values, objects, arrays, Maps, Sets, Dates, and more.

License

Notifications You must be signed in to change notification settings

adamcsk1/deep-equal-util

Repository files navigation

deep-equal-util

MIT License

deepEqual

A zero-dependency utility for deep equality comparison of JavaScript values, objects, arrays, Maps, Sets, Dates, and more.


Features

  • Deep comparison for primitives, arrays, objects, Maps, Sets, Dates, and RegExps
  • Handles NaN, null, and undefined correctly
  • Circular reference safe
  • TypeScript support with generated .d.ts files
  • Lightweight and fast

Installation

npm install deep-equal-util

Usage

import { deepEqual } from 'deep-equal-util';

deepEqual(1, 1); // true
deepEqual([1, 2, 3], [1, 2, 3]); // true
deepEqual({ a: 1, b: [2, 3] }, { a: 1, b: [2, 3] }); // true
deepEqual(new Set([1, 2]), new Set([2, 1])); // true
deepEqual(new Map([['a', 1]]), new Map([['a', 1]])); // true
deepEqual(NaN, NaN); // true
deepEqual({ a: 1 }, { a: 1, b: 2 }); // false

API

deepEqual(a: T, b: T): boolean

Performs a deep equality check between a and b.

Supported types

  • Primitives (number, string, boolean, null, undefined)
  • Arrays
  • Plain objects
  • Date
  • RegExp
  • Map
  • Set

Examples

deepEqual({ foo: [1, 2] }, { foo: [1, 2] }); // true
deepEqual([1, { bar: 2 }], [1, { bar: 2 }]); // true
deepEqual(new Date('2020-01-01'), new Date('2020-01-01')); // true
deepEqual(/abc/i, /abc/i); // true

Testing

npm test

About

A zero-dependency utility for deep equality comparison of JavaScript values, objects, arrays, Maps, Sets, Dates, and more.

Topics

Resources

License

Stars

Watchers

Forks