An open API service indexing awesome lists of open source software.

https://github.com/kikobeats/hyperdiff

Find common, removed and added element between two collections.
https://github.com/kikobeats/hyperdiff

comparison difference intersection

Last synced: 4 months ago
JSON representation

Find common, removed and added element between two collections.

Awesome Lists containing this project

README

        

# hyperdiff

![Last version](https://img.shields.io/github/tag/Kikobeats/hyperdiff.svg?style=flat-square)
[![Coverage Status](https://img.shields.io/coveralls/Kikobeats/hyperdiff.svg?style=flat-square)](https://coveralls.io/github/Kikobeats/hyperdiff)
[![NPM Status](https://img.shields.io/npm/dm/hyperdiff.svg?style=flat-square)](https://www.npmjs.org/package/hyperdiff)

> Find common, removed and added element between two collections.

## Install

```bash
$ npm install hyperdiff --save
```

## Usage

Using a flat `Array`:

```js
const diff = require('hyperdiff')

const result = diff(
[1, 2, 3, 4, 5, 6],
[1, 2, 4, 5, 6, 0, 9, 10]
)

console.log(result)
// {
// added: [ 0, 9, 10 ],
// removed: [ 3 ],
// common: [ 1, 2, 4, 5, 6 ]
// }
```

Using an `Array` of `Object`'s (in this case you need to provide the unique id):

```js
const diff = require('hyperdiff')
const result = diff(
[
{ id: 1, name: 'a' },
{ id: 2, name: 'b' },
{ id: 3, name: 'c' },
{ id: 4, name: 'd' },
{ id: 5, name: 'e' }
],
[
{ id: 1, name: 'a' },
{ id: 2, name: 'b' },
{ id: 7, name: 'e' }
],
'id'
)

console.log(result)
// {
// added: [ { id: 7, name: 'e' } ],
// removed: [ { id: 3, name: 'c' }, { id: 4, name: 'd' }, { id: 5, name: 'e' } ],
// common: [ { id: 1, name: 'a' }, { id: 2, name: 'b' } ]
// }
```

It's also support multiple properties as id or provide a `function`.

## Benchmark

```bash
❯ node bench.js
simpleArrayDiff*1000: 143.742ms
hyperDiff*1000: 80.234ms
simpleArrayDiff*1000: 143.405ms
hyperDiff*1000: 75.803ms
```

## API

### hyperdiff(orig, dist, [ids])

#### orig

*Required*

Type: `array`

First array for be compared.

#### dist

*Required*

Type: `array`

Second array for be compared. Notes the results are modeled from the second array.

#### ids

Type: `string`|`array`|`function`

In the case that you provide an `Array` of `Object`'s, you need to specify the `key`'s to be used as `id`.

## Related

* [redis-diff](https://github.com/Kikobeats/redis-diff) - Perform a diff comparison backed by redis.

## License

MIT © [Kiko Beats](https://github.com/Kikobeats).