https://github.com/jsheaven/equal
Deep comparison of JavaScript values
https://github.com/jsheaven/equal
equals javascript typescript
Last synced: about 1 month ago
JSON representation
Deep comparison of JavaScript values
- Host: GitHub
- URL: https://github.com/jsheaven/equal
- Owner: jsheaven
- License: mit
- Created: 2023-02-20T10:22:20.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-05-28T09:51:43.000Z (about 2 years ago)
- Last Synced: 2025-10-10T14:40:50.607Z (8 months ago)
- Topics: equals, javascript, typescript
- Language: TypeScript
- Homepage:
- Size: 200 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
@jsheaven/equal
> this package provides a utility for deep comparison of two values (objects, primitives or arrays) in JavaScript /
> Typescript. It can be used to check if two objects are equal in value, even if they have different references in memory.
> The isEqual function recursively compares each property of the objects, using the === operator to compare primitive
> values and recursively calling itself to compare nested objects and arrays. The package also provides an option to
> perform a strict comparison, which will check that the objects have the same prototype chain, constructor, and other
> characteristics. The package is commonly used in testing frameworks, such as Jest, to compare the expected and actual
> values of test results.
User Stories
1. As a developer, i want to use isEqual for comparing two values
2. As a developer, i don't want to create a custom comparator
Features
- ✅ Compares two values for equality.
- ✅ Include Array, Date, Error, RegExp, DomNode, Primitives or Objects.
- ✅ Includes also circular references.
- ✅ Available as a simple API and simple to use CLI
- ✅ Just `775 byte` nano sized (ESM, gizpped)
- ✅ Tree-shakable and side-effect free
- ✅ Runs on Windows, Mac, Linux, CI tested
- ✅ First class TypeScript support
- ✅ 100% Unit Test coverage
Example usage (API, as a library)
Setup
- yarn: `yarn add @jsheaven/equal`
- npm: `npm install @jsheaven/equal`
ESM
```ts
import { isEqual } from '@jsheaven/equal'
const equal = isEqual({ date: new Date('2023-02-02') }, { date: new Date('2023-02-02') })
if (equal) {
//logic if result is equal
} else {
//logic if result is not equal
}
```
CommonJS
```ts
const { isEqual } = require('@jsheaven/equal')
// same API like ESM variant
```