https://github.com/jsheaven/equal
Deep comparison of JavaScript values
https://github.com/jsheaven/equal
equals javascript typescript
Last synced: 2 months 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 (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-04T22:06:46.000Z (about 1 year ago)
- Last Synced: 2024-04-05T14:57:00.357Z (about 1 year ago)
- Topics: equals, javascript, typescript
- Language: TypeScript
- Homepage:
- Size: 191 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 coverageExample 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
```