A zero-dependency utility for deep equality comparison of JavaScript values, objects, arrays, Maps, Sets, Dates, and more.
- Deep comparison for primitives, arrays, objects, Maps, Sets, Dates, and RegExps
- Handles
NaN
,null
, andundefined
correctly - Circular reference safe
- TypeScript support with generated
.d.ts
files - Lightweight and fast
npm install deep-equal-util
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
Performs a deep equality check between a
and b
.
- Primitives (
number
,string
,boolean
,null
,undefined
) - Arrays
- Plain objects
Date
RegExp
Map
Set
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
npm test