UNPKG

@monstermann/fn

Version:

A utility library for TypeScript.

33 lines (31 loc) 926 B
import { dfdlT } from "@monstermann/dfdl"; //#region src/object/isShallowEqual.ts /** * `isShallowEqual(target, source)` * * Performs a shallow equality comparison between `target` and `source` objects. * * ```ts * isShallowEqual({ a: 1, b: 2 }, { a: 1, b: 2 }); // true * isShallowEqual({ a: 1, b: 2 }, { a: 1, b: 3 }); // false * ``` * * ```ts * pipe({ a: 1, b: 2 }, isShallowEqual({ a: 1, b: 2 })); // true * pipe({ a: 1, b: 2 }, isShallowEqual({ a: 1, b: 3 })); // false * ``` */ const isShallowEqual = dfdlT((a, b) => { if (a === b || Object.is(a, b)) return true; const keys = Object.keys(a); if (keys.length !== Object.keys(b).length) return false; for (const key of keys) { if (!Object.hasOwn(b, key)) return false; const { [key]: valueA } = a; const { [key]: valueB } = b; if (valueA !== valueB || !Object.is(valueA, valueB)) return false; } return true; }, 2); //#endregion export { isShallowEqual };