Equality Utilities API reference for equality comparison functions scale API Reference
Categories

Equality Utilities

The Equality utilities provide functions for comparing values and objects in JavaScript. These functions offer more comprehensive equality checks than the built-in equality operators, particularly for complex data structures.

Functions

isEqual

function isEqual(a, b, options?)

Performs a deep equality comparison between two values.

Deep Comparison This function performs a recursive comparison for objects and arrays, ensuring that nested structures are also checked for equality. It handles various edge cases, including NaN comparisons.

Parameters

NameTypeDescription
aanyThe first value to compare
banyThe second value to compare
optionsobjectOptional comparison options

Options

NameTypeDefaultDescription
loosebooleanfalseUses == instead of === for leaf value comparison
ignoreKeysstring[][]Array of property names to skip during comparison
partialbooleanfalseChecks if a is a structural subset of b

Returns

boolean - true if the values are deeply equal, false otherwise.

Example

import { isEqual } from '@semantic-ui/utils';
console.log(isEqual({a: 1, b: {c: 2}}, {a: 1, b: {c: 2}})); // true
console.log(isEqual([1, 2, 3], [1, 2, 3])); // true
console.log(isEqual({a: 1, b: 2}, {b: 2, a: 1})); // true
console.log(isEqual(NaN, NaN)); // true
console.log(isEqual({a: 1, b: 2}, {a: 1, b: 3})); // false

Loose Comparison

When loose is true, leaf values are compared with == instead of ===, allowing type coercion.

import { isEqual } from '@semantic-ui/utils';
console.log(isEqual('1', 1, { loose: true })); // true
console.log(isEqual(0, false, { loose: true })); // true
console.log(isEqual('1', 1)); // false (strict by default)

Ignoring Keys

Use ignoreKeys to skip specific properties during comparison.

import { isEqual } from '@semantic-ui/utils';
const a = { name: 'Alice', updatedAt: 1000 };
const b = { name: 'Alice', updatedAt: 2000 };
console.log(isEqual(a, b)); // false
console.log(isEqual(a, b, { ignoreKeys: ['updatedAt'] })); // true

Partial Comparison

When partial is true, checks if a is a structural subset of b — every key in a must exist and match in b, but b may have additional keys.

import { isEqual } from '@semantic-ui/utils';
const subset = { a: 1 };
const full = { a: 1, b: 2, c: 3 };
console.log(isEqual(subset, full)); // false
console.log(isEqual(subset, full, { partial: true })); // true
console.log(isEqual(full, subset, { partial: true })); // false (a has keys b doesn't)
Previous
Environment
Next
Functions