isEqual
Problem
You need deep equality between two values — for example change-detection, deduplication, or memoization key comparison.
Solution
Use isEqual(a, b, options?) for deep equality. Pass { depth: 'shallow' } to compare only one level by reference.
ts
import { isEqual } from '@vielzeug/arsenal';
isEqual({ a: 1 }, { a: 1 }); // true
isEqual([1, [2, 3]], [1, [2, 3]]); // true
isEqual(new Date('2024'), new Date('2024')); // true
isEqual({ a: 1 }, { a: 2 }); // falseShallow mode
ts
import { isEqual } from '@vielzeug/arsenal';
const arr = [1, 2, 3];
isEqual({ arr }, { arr }, { depth: 'shallow' }); // true — same reference
isEqual([1, 2], [1, 2], { depth: 'shallow' }); // false — different referencesPitfalls
- Deep equality is recursive — avoid on very large graphs without memoization.
- Handles circular references,
Date,Map, andSet.