UNPKG

typescript-ds-lib

Version:

A collection of TypeScript data structure implementations

51 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Utils = void 0; class Utils { static equals(key1, key2) { if (key1 === key2) return true; if (key1 == null || key2 == null) return key1 === key2; // Check for custom equals method if (typeof key1.equals === 'function') { return key1.equals(key2); } const type1 = typeof key1; const type2 = typeof key2; // Handle primitives if (type1 !== 'object' && type2 !== 'object') { if (type1 === 'number' && type2 === 'number') { return key1 === key2 || (isNaN(key1) && isNaN(key2)); } return key1 === key2; } // Handle special object types if (key1 instanceof Date) { return key2 instanceof Date && (key1.getTime() === key2.getTime() || (isNaN(key1.getTime()) && isNaN(key2.getTime()))); } if (key1 instanceof RegExp) { return key2 instanceof RegExp && key1.toString() === key2.toString(); } if (Array.isArray(key1)) { if (!Array.isArray(key2) || key1.length !== key2.length) return false; for (let i = 0; i < key1.length; i++) { if (!Utils.equals(key1[i], key2[i])) return false; } return true; } // Handle plain objects if (typeof key1 === 'object' && typeof key2 === 'object') { const keys1 = Object.keys(key1); const keys2 = Object.keys(key2); return keys1.length === keys2.length && keys1.every(k => k in key2 && Utils.equals(key1[k], key2[k])); } return false; } } exports.Utils = Utils; //# sourceMappingURL=utils.js.map