UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

78 lines (76 loc) 1.49 kB
import { dfdlT } from "@monstermann/dfdl"; //#region src/map/isShallowEqual.ts /** * `isShallowEqual(map, source)` * * Checks if `map` is shallow equal to `source` by comparing their keys and values using strict equality. * * ```ts * isShallowEqual( * new Map([ * ["a", 1], * ["b", 2], * ]), * new Map([ * ["a", 1], * ["b", 2], * ]), * ); // true * * isShallowEqual( * new Map([ * ["a", 1], * ["b", 2], * ]), * new Map([ * ["a", 1], * ["b", 3], * ]), * ); // false * ``` * * ```ts * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * isShallowEqual( * new Map([ * ["a", 1], * ["b", 2], * ]), * ), * ); // true * * pipe( * new Map([ * ["a", 1], * ["b", 2], * ]), * isShallowEqual( * new Map([ * ["a", 1], * ["b", 3], * ]), * ), * ); // false * ``` */ const isShallowEqual = dfdlT((target, source) => { if (target.size !== source.size) return false; const seen = /* @__PURE__ */ new Set(); for (const k of target.keys()) { seen.add(k); if (!source.has(k)) return false; if (target.get(k) !== source.get(k)) return false; } for (const k of source.keys()) { if (seen.has(k)) continue; if (!target.has(k)) return false; if (target.get(k) !== source.get(k)) return false; } return true; }, 2); //#endregion export { isShallowEqual };