hyperdiff
Version:
Find common, removed and added element between two arrays.
106 lines (75 loc) • 2.15 kB
Markdown
# hyperdiff

[](https://coveralls.io/github/Kikobeats/hyperdiff)
[](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*<br>
Type: `array`
First array for be compared.
#### dist
*Required*<br>
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).