2.0.18 • Published 6 months ago

hyperdiff v2.0.18

Weekly downloads
1,116
License
MIT
Repository
github
Last release
6 months ago

hyperdiff

Last version Coverage Status NPM Status

Find common, removed and added element between two collections.

Install

$ npm install hyperdiff --save

Usage

Using a flat Array:

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):

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

❯ 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 - Perform a diff comparison backed by redis.

License

MIT © Kiko Beats.

2.0.18

6 months ago

2.0.17

7 months ago

2.0.15

8 months ago

2.0.16

8 months ago

2.0.14

1 year ago

2.0.13

2 years ago

2.0.11

2 years ago

2.0.12

2 years ago

2.0.9

2 years ago

2.0.10

2 years ago

2.0.8

3 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.0

7 years ago