rOACCT/node_modules/dequal0615c7ce0b3fstaging
readme.md
dequal ![CI](https://github.com/lukeed/dequal/actions)
A tiny (304B to 489B) utility to check for deep equality
This module supports comparison of all types, including Function, RegExp, Date, Set, Map, TypedArrays, DataView, null, undefined, and NaN values. Complex values (eg, Objects, Arrays, Sets, Maps, etc) are traversed recursively.
Important:
- key order within Objects does not matter
- value order within Arrays _does_ matter
- values within Sets and Maps use value equality
- keys within Maps use value equality
Install
$ npm install --save dequal
Modes
There are two "versions" of dequal available:
dequal
Size (gzip): 489 bytes<br> Availability: CommonJS, ES Module, UMD
dequal/lite
Size (gzip): 304 bytes<br> Availability: CommonJS, ES Module
IE9+ | Number | String | Date | RegExp | Object | Array | Class | Set | Map | ArrayBuffer | TypedArray | DataView | |
- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
dequal | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
dequal/lite | 👍 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
<sup>Note: Table scrolls horizontally!</sup>
Usage
js import { dequal } from 'dequal'; dequal(1, 1); //=> true dequal({}, {}); //=> true dequal('foo', 'foo'); //=> true dequal([1, 2, 3], [1, 2, 3]); //=> true dequal(dequal, dequal); //=> true dequal(/foo/, /foo/); //=> true dequal(null, null); //=> true dequal(NaN, NaN); //=> true dequal([], []); //=> true dequal( [{ a:1 }, [{ b:{ c:[1] } }]], [{ a:1 }, [{ b:{ c:[1] } }]] ); //=> true dequal(1, '1'); //=> false dequal(null, undefined); //=> false dequal({ a:1, b:[2,3] }, { a:1, b:[2,5] }); //=> false dequal(/foo/i, /bar/g); //=> false
API
dequal(foo, bar)
Returns: Boolean
Both foo and bar can be of any type.<br> A Boolean is returned indicating if the two were deeply equal.
Benchmarks
Running Node v10.13.0
The benchmarks can be found in the [/bench](/bench) directory. They are separated into two categories:
- basic – compares an object comprised of String, Number, Date, Array, and Object values.
- complex – like basic, but adds RegExp, Map, Set, and Uint8Array values.
Note: Only candidates that pass validation step(s) are listed. <br>For example, fast-deep-equal/es6 handles Set and Map values, but uses _referential equality_ while those listed use _value equality_.
Load times: assert 0.109ms util 0.006ms fast-deep-equal 0.479ms lodash/isequal 22.826ms nano-equal 0.417ms dequal 0.396ms dequal/lite 0.264ms Benchmark :: basic assert.deepStrictEqual x 325,262 ops/sec ±0.57% (94 runs sampled) util.isDeepStrictEqual x 318,812 ops/sec ±0.87% (94 runs sampled) fast-deep-equal x 1,332,393 ops/sec ±0.36% (93 runs sampled) lodash.isEqual x 269,129 ops/sec ±0.59% (95 runs sampled) nano-equal x 1,122,053 ops/sec ±0.36% (96 runs sampled) dequal/lite x 1,700,972 ops/sec ±0.31% (94 runs sampled) dequal x 1,698,972 ops/sec ±0.63% (97 runs sampled) Benchmark :: complex assert.deepStrictEqual x 124,518 ops/sec ±0.64% (96 runs sampled) util.isDeepStrictEqual x 125,113 ops/sec ±0.24% (96 runs sampled) lodash.isEqual x 58,677 ops/sec ±0.49% (96 runs sampled) dequal x 345,386 ops/sec ±0.27% (96 runs sampled)
License
MIT © Luke Edwards