Skip to content

Latest commit

 

History

History
59 lines (39 loc) · 1.38 KB

File metadata and controls

59 lines (39 loc) · 1.38 KB
description
Modern alternatives to the deep-equal package for deep object comparison

Replacements for deep-equal

Node.js

Node.js has a builtin function isDeepStrictEqual. Consider using that if you don’t need browser support.

Example:

import equal from 'deep-equal' // [!code --]
import { isDeepStrictEqual } from 'node:util' // [!code ++]

const a = { foo: 'bar' }
const b = { foo: 'bar' }

equal(a, b) // true [!code --]
isDeepStrictEqual(a, b) // true [!code ++]

dequal

dequal has the same simple API as deep equal.

Example:

import equal from 'deep-equal' // [!code --]
import dequal from 'dequal' // [!code ++]

const a = { foo: 'bar' }
const b = { foo: 'bar' }

equal(a, b) // true [!code --]
dequal(a, b) // true [!code ++]

fast-deep-equal

fast-deep-equal again has the same API shape.

Example:

import deepEqual from 'deep-equal' // [!code --]
import fastDeepEqual from 'fast-deep-equal' // [!code ++]

const a = { foo: 'bar' }
const b = { foo: 'bar' }

deepEqual(a, b) // true [!code --]
fastDeepEqual(a, b) // true [!code ++]

Note

This library has a separate entrypoint for supporting Maps, Sets, etc. You can use fast-deep-equal/es6 to support those types.