Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 899 Bytes

README.md

File metadata and controls

28 lines (20 loc) · 899 Bytes

Fuzzy compare objects

Example

let a = { prop1: 10, prop2: 'aa' }
let b = { prop1: 10, prop2: 'ab' }
let result = compare(a, b)
// result is { equal: 0.75 }

Usage

const compare = require('fuzzy-compare')
const opts = {}
compare({ a: 1 }, { a: 0.5 }, opts)

Accepts two objects and an optional opts object. Objects can be of type string, number, or object. If the objects have different types, similarty will be 0.

Options:

  • ignoreExtraKeys: if true, will ignore keys of the second object that aren't present in the first object. e.g. compare({ a: 1 }, { a: 1, b: 2}, { ignoreExtraKeys: true }) will return 100% similarity

Info

The calculation for strings is based on the Levenshtein distance.

For numbers a difference of greater than 1 means no similarity, a difference of 0.5 means 50% similarity and so on. PRs to modify this through options are welcome.