UNPKG

@rxap/utilities

Version:

A collection of utility functions, types and interfaces.

41 lines (40 loc) 1.56 kB
/** * This function checks if two values are equal. It uses a deep comparison algorithm to determine if two values are equivalent in structure and value. * * @export * @function equals * @param {any} a - The first value to compare. * @param {any} b - The second value to compare. * @param {any[]} [stackA=[]] - An optional array to keep track of traversed values in the first argument. This is used to handle circular references. * @param {any[]} [stackB=[]] - An optional array to keep track of traversed values in the second argument. This is used to handle circular references. * * @returns {boolean} - Returns true if the values are equivalent, false otherwise. * * @example * // returns true * equals([1, 2, 3], [1, 2, 3]); * * @example * // returns false * equals({ a: 1 }, { a: 2 }); * * @example * // returns true * equals({ a: { b: 1 } }, { a: { b: 1 } }); * * @example * // returns false (different structure) * equals({ a: { b: 1 } }, { a: 1, b: 1 }); * * @example * // returns true (handles circular references) * var a = {}, b = {}; * a.self = a; * b.self = b; * equals(a, b); * * Note: This function also checks for the presence of 'fantasy-land/equals' or 'equals' methods on the values and uses them for comparison if they exist. * It also handles comparison of different types of values like 'Arguments', 'Array', 'Object', 'Boolean', 'Number', 'String', 'Date', 'Error', 'RegExp', 'Map', 'Set', and typed arrays. * */ export declare function equals(a: any, b: any, stackA?: any[], stackB?: any[]): any;