UNPKG

advanced-map-altered-equal

Version:

Map-like class with customizable equality operator

55 lines 1.49 kB
"use strict"; const tslib_1 = require("tslib"); const advanced_map_base_1 = tslib_1.__importDefault(require("advanced-map-base")); /** * This class allows one to alter equality comparision */ class AlteredEqual extends advanced_map_base_1.default { /** * @param Map A constructor (a.k.a class) that creates an iterable Map-like object * @param equal Function that compares keys, default to `Object.is` */ constructor(Map, equal = Object.is) { super(Map); this.equal = equal; } find(key) { const { equal } = this; for (const [k, v] of this.data) { if (equal(key, k)) { return { found: true, value: { key: k, value: v } }; } } return { found: false }; } has(key) { return this.find(key).found; } get(key) { const res = this.find(key); return res.found ? res.value.value : undefined; } set(key, value) { const res = this.find(key); this.data.set(res.found ? res.value.key : key, value); return this; } delete(key) { const res = this.find(key); if (res.found) { this.data.delete(res.value.key); return true; } return false; } } module.exports = AlteredEqual; //# sourceMappingURL=index.js.map