namespace Eq
A function returning true if given v1 and v2 should be considered equal.
Companion type: Eq<T>
Functions
anyDeepEq
Returns an Eq instance that checks equality of any values. For composed values (objects and iterables) it will recursively compare the contained values.
anyDeepEqDefinition
function anyDeepEq<T = any>(): Eq<T>;
Type parameters
| Name | Description |
|---|---|
| T | the value type |
may have poor performance for deeply nested types and large arrays, and objects with circular structures may cause infinite loops
const eq = Eq.anyDeepEq()
console.log(eq(1, 'a'))
// => false
console.log(eq({ a: 1, b: 2 }, { b: 2, a: 1 }))
// => true
console.log(eq([{ a: 1, b: 2 }], [{ b: 2, a: 1 }]))
// => false
anyFlatEq
Returns an Eq instance that checks equality of any values. For composed values (objects and iterables) it will compare with Object.is.
anyFlatEqanyJsonEq
Returns an Eq instance that considers values equal their JSON.stringify values are equal.
anyJsonEqanyShallowEq
Returns an Eq instance that checks equality of any values. For composed values (objects and iterables) it will enter 1 level, and if again compound values are found, they are compared with Object.is.
anyShallowEqanyToStringEq
Returns an Eq instance that considers two values equal when their string representations, as returned by Eq.convertAnyToString, are equal.
anyToStringEqEq.convertAnyToString, are equal.convertAnyToString
Converts any given value to a string representation that is stable for equality and ordering comparisons.
For primitive values and objects with a custom toString implementation, it uses String(value). For plain objects with the default Object.prototype.toString implementation, it uses JSON.stringify(value) instead.
convertAnyToStringvalue to a string representation that is stable for equality and ordering comparisons.
For primitive values and objects with a custom toString implementation, it uses String(value). For plain objects with the default Object.prototype.toString implementation, it uses JSON.stringify(value) instead.createStringCollatorEq
Returns an Eq instance that considers strings equal taking the given or default locale into account.
createStringCollatorEqDefinition
function createStringCollatorEq(...args: ConstructorParameters<typeof Intl.Collator>): Eq<string>;
Parameters
| Name | Type | Description |
|---|---|---|
args | ConstructorParameters<typeof Intl.Collator> |
const eq = Eq.createStringCollatorEq()
console.log(eq('a', 'a'))
// => true
console.log(eq('abc', 'aBc'))
// => false
dateEq
Returns an Eq instance that compares Date objects according to their valueOf value.
dateEqvalueOf value.defaultEq
Returns the default Eq instance, which is the Eq.anyDeepEq() instance.
defaultEqiterableEq
Returns an Eq instance that compares Iterables by comparing their elements with the given itemEq Eq instance.
iterableEqitemEq Eq instance.Definition
Type parameters
| Name | Description |
|---|---|
| T | the Iterable element type |
Parameters
| Name | Type | Description |
|---|---|---|
itemEq | Eq<T> | (optional) the Eq instance to use to compare the Iterable's elements |
const eq = Eq.iterableEq();
console.log(eq([1, 2, 3], [1, 2, 3])
// => true
console.log(eq([1, 2, 3], [1, 3, 2])
// => false
objectEq
Returns an Eq instance that checks equality of objects containing property values of type V by iteratively applying given valueEq to each of the object's property values.
objectEqvalueEq to each of the object's property values.Definition
function objectEq<V = any>(valueEq?: Eq<V>): Eq<Record<any, V>>;
Type parameters
| Name | Description |
|---|---|
| V | the object property value type |
Parameters
| Name | Type | Description |
|---|---|---|
valueEq | Eq<V> | (optional) the Eq instance to use to compare property values |
const eq = Eq.objectEq()
console.log(eq({ a: 1, b: { c: 2 }}, { b: { c: 2 }, a: 1 }))
// => true
console.log(eq({ a: 1, b: { c: 2 }}, { a: 1, b: { c: 3 }}))
// => false
stringCaseInsentitiveEq
Returns an Eq instance that considers strings equal regardless of their case.
stringCaseInsentitiveEqstringCharCodeEq
Returns an Eq instance that considers strings equal when all their charcodes are equal.
stringCharCodeEqtupleSymmetric
Returns an Eq instance for tuples that considers two tuples [A, B] and [C, D] equal if [A, B] equals [C, D], or if [A, B] equals [D, C]
tupleSymmetricEq instance for tuples that considers two tuples [A, B] and [C, D] equal if [A, B] equals [C, D], or if [A, B] equals [D, C]Definition
function tupleSymmetric<T>(eq?: Eq<T>): Eq<readonly [T, T]>;
Type parameters
| Name | Description |
|---|---|
| T |
Parameters
| Name | Type | Description |
|---|---|---|
eq | Eq<T> | (optional) an alternative Eq instance to use for the values in the tuple |
const eq = Eq.tupleSymmetric()
console.log(eq([1, 2], [1, 2]))
// => true
console.log(eq([1, 2], [2, 1]))
// => true
console.log(eq([1, 3], [2, 1]))
// => false
valueOfEq
Returns an Eq instance for objects that have a valueOf method. It returns true if the .valueOf values of both given objects are equal.
valueOfEqvalueOf method. It returns true if the .valueOf values of both given objects are equal.Definition
function valueOfEq<T extends {
valueOf(): V;
}, V>(): Eq<T>;
Type parameters
| Name | Description |
|---|---|
| T | the object type containing a valueOf function of type V |
| V | the valueOf result type |
const eq = Eq.valueOfEq()
console.log(eq(new Number(5), new Number(5)))
// => true
console.log(eq(new Number(5), new Number(3)))
// => false
Constants
| Name | Description |
|---|---|
| objectIs | An Eq instance that uses Object.is to determine if two objects are equal. |