# equals

> Check if two values are deeply equivalent

Latest version **1.0.5** (published 2016-07-01) · MIT license · 0 weekly downloads

## Install

```sh
npm install equals
pnpm add equals
yarn add equals
bun add equals
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.5 |
| Published | 2016-07-01 |
| First published | 2013-01-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 12 |
| Author | Jake Rosoman |
| Maintainers | jkroso |
| Keywords | equality, equal, equivalent, equivalence, = |

## Links

- npm: https://www.npmjs.com/package/equals
- Repository: https://github.com/jkroso/equals
- Homepage: https://github.com/jkroso/equals#readme
- Issues: https://github.com/jkroso/equals/issues
- npm.io page: https://npm.io/package/equals

## Dependencies (1)

- [jkroso-type](https://npm.io/package/jkroso-type.md) 1

## Recent versions

- 1.0.5 (latest) — 2016-07-01
- 1.1.0 — 2016-05-26
- 1.0.4 — 2016-05-26
- 1.0.3 — 2016-05-24
- 2.0.0 — 2016-05-22
- 1.0.2 — 2016-05-22
- 1.0.1 — 2015-10-01
- 1.0.0 — 2014-10-29
- 0.3.7 — 2014-09-20
- 0.3.6 — 2014-02-20
- 0.3.5 — 2014-02-18
- 0.3.4 — 2014-02-18
- 0.3.3 — 2014-02-14
- 0.3.2 — 2013-06-11
- 0.2.0 — 2013-03-19
- … 2 more at https://npm.io/package/equals/versions

## README

# equals

  compare values of any type for equility

## Installation

With your favorite package manager:

- [packin](//github.com/jkroso/packin): `packin add equals`
- [component](//github.com/component/component#installing-packages): `component install jkroso/equals`
- [npm](//npmjs.org/doc/cli/npm-install.html): `npm install equals`

then in your app:

```js
var equal = require('equals')
```

## API

### equal(a, b, [memos])

`equal` takes as many arguments as you like of any type you like and returns a boolean result. Primitive types are equal if they are `===`. While composite types, i.e. Objects and Arrays, are considered equal if they have both the same structure and each sub-value is also `equal`. Circular references in composite structures are supported.

Same structure:
```js
equal(
  { a : [ 2, 3 ], b : [ 4 ] },
  { a : [ 2, 3 ], b : [ 4 ] }
) // => true
```

Different Structure:
```js
equal(
  { x : 5, y : [6] },
  { x : 5}
) // => false
```

Same structure, different values:

```js
equal(
  { a: [ 1, 2 ], b : [ 4 ]},
  { a: [ 2, 3 ], b : [ 4 ]}
) // => false
```

Primitives:

```js
equal(new Date(0), new Date(1)) // => false
```

Some possible gotchas:
- `null` __is not__ equal to `undefined`.
- `NaN` __is__ equal to `NaN` (normally not the case).
- `-0` __is__ equal to `+0`.
- Strings will __not__ coerce to numbers.
- Non enumerable properties will not be checked. They can't be.
- `arguments.callee` is not considered when comparing arguments

---
_Source: https://npm.io/package/equals · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
