The equals() function performs deep equality comparison for values, including SurrealDB-specific types that may not compare correctly with JavaScript's === operator.
Import:
Source: utils/equals.ts
Function signature
Parameters
| Parameter | Type | Description |
|---|---|---|
a | unknown | First value to compare. |
b | unknown | Second value to compare. |
Returns
boolean - true if values are deeply equal, false otherwise
What it compares
The equals() function correctly handles:
Primitives - strings, numbers, booleans, null, undefined
SurrealDB Types - RecordId, DateTime, Duration, Decimal, Uuid, etc.
Dates - JavaScript Date objects
Regular Expressions - RegExp patterns
Objects - Deep object comparison
Arrays - Deep array comparison
Mixed types - Proper handling of bigint/number comparisons
Examples
Primitive comparisons
SurrealDB type comparisons
Object comparisons
Array comparisons
Mixed type comparisons
Use cases
Checking record existence
Deduplication
Change detection
Array difference
Caching / memoization
Record comparison
Why not use === or ==?
JavaScript's equality operators don't work correctly for:
Best practices
1. Use for value comparisons
2. Use for complex type comparisons
3. Prefer built-in .equals() for single types
See also
Data Types - SurrealDB data types
RecordId.equals() - RecordId-specific comparison
DateTime.equals() - DateTime-specific comparison