is-deep-strict-equal-x

1.1.2 • Public • Published

Travis status Dependency status devDependency status npm version jsDelivr hits bettercodehub score Coverage Status

is-deep-strict-equal-x

node's isDeepStrictEqual algorithm.

is-deep-strict-equal-x.isDeepStrictEqualboolean

Tests for deep equality between the actual and expected parameters. "Deep" equality means that the enumerable "own" properties of child objects are recursively evaluated also by the following rules.

Comparison details

Primitive values are compared using the SameValue Comparison, used by Object.is(). Type tags of objects should be the same. [[Prototype]] of objects are compared using the Strict Equality Comparison. Only enumerable "own" properties are considered. Error names and messages are always compared, even if these are not enumerable properties. Enumerable own Symbol properties are compared as well. Object wrappers are compared both as objects and unwrapped values. Object properties are compared unordered. Map keys and Set items are compared unordered. Recursion stops when both sides differ or both sides encounter a circular reference. WeakMap and WeakSet comparison does not rely on their values. See below for further details.

Kind: Exported function
Returns: boolean - true if val1 and val2 are deemed equal, otherwise false.
See: https://nodejs.org/dist/latest-v10.x/docs/api/util.html#util_util_isdeepstrictequal_val1_val2

Param Type Description
val1 * First comparison object.
val2 * Second comparison object.

Example

import {isDeepStrictEqual} from 'is-deep-strict-equal-x';
 
// This fails because 1 !== '1'.
isDeepStrictEqual({a: 1}, {a: '1'}); // false
 
// The following objects don't have own properties
const date = new Date();
const object = {};
const fakeDate = {};
isDeepStrictEqual(fakeDate, Date.prototype);
 
// Different [[Prototype]]:
isDeepStrictEqual(object, fakeDate); // false
 
// Different type tags:
isDeepStrictEqual(date, fakeDate); // false
 
isDeepStrictEqual(NaN, NaN); // true
 
// Different unwrapped numbers:
isDeepStrictEqual(Object(1), Object(2)); // false
 
isDeepStrictEqual(Object('foo'), Object('foo')); // true
 
isDeepStrictEqual(-0, -0); // true
 
// Different zeros using the SameValue Comparison:
isDeepStrictEqual(0, -0); // false
 
const symbol1 = Symbol();
const symbol2 = Symbol();
isDeepStrictEqual({[symbol1]: 1}, {[symbol1]: 1}); // true
isDeepStrictEqual({[symbol1]: 1}, {[symbol2]: 1}); // false
 
const weakMap1 = new WeakMap();
const weakMap2 = new WeakMap([[{}, {}]]);
const weakMap3 = new WeakMap();
weakMap3.unequal = true;
 
isDeepStrictEqual(weakMap1, weakMap2); // true
 
// Fails because weakMap3 has a property that weakMap1 does not contain:
isDeepStrictEqual(weakMap1, weakMap3); // false

is-deep-strict-equal-x.isDeepEqualboolean

Deprecated - Use isDeepStrictEqual instead!

Kind: Exported function
Returns: boolean - true if val1 and val2 are deemed equal, otherwise false.

Param Type Description
val1 * First comparison object.
val2 * Second comparison object.

Example

import {isDeepEqual} from 'is-deep-strict-equal-x';
 
isDeepEqual(Error('a'), Error('b')); // true
 
isDeepEqual(4, '4'); // => true
 
isDeepEqual({a: 4, b: '1'}, {b: '1', a: 4}); // => true
 
isDeepEqual(new Date(), new Date(2000, 3, 14)); // => false
 
isDeepEqual(4, '4', true); // => false

Package Sidebar

Install

npm i is-deep-strict-equal-x

Weekly Downloads

2

Version

1.1.2

License

MIT

Unpacked Size

1.13 MB

Total Files

11

Last publish

Collaborators

  • xotic750