This package provides functions for comparing objects.
# use npm
$ npm install --save object-comparator
# use yarn
$ yarn add object-comparator
import { compareObject } from 'object-comparator'
const obj1 = { name: 'foo', value: 1 }
const obj2 = { name: 'bar', value: 2 }
const obj3 = { name: 'bar', value: 2 }
const result1 = compareObject(obj1, obj2)
console.log(result1.equal) // false
const result2 = compareObject(obj2, obj3)
console.log(result2.equal) // true
Commonly, the comparison functions have a Result type return value defined as follows.
type Equal = {
equal: true
}
type NotEqual = {
equal: false
}
type Result = Equal | NotEqual
Classify the value of the argument into one of the following
- ObjectType.Array
- ObjectType.Bigint
- ObjectType.Boolean
- ObjectType.Class
- ObjectType.Function
- ObjectType.Number
- ObjectType.ull
- ObjectType.Object
- ObjectType.String
- ObjectType.Symbol
- ObjectType.Undefined
Compare the values of ObjectType.Function. If an optional comparison operator is given(option.functionTypeComparator
), use it to compare, otherwise use fun.name
to compare.
Comparing values that are ObjectType. If an optional comparison operator is given(option.classTypeComparator
), use it to compare, otherwise use fun.constructor.name
to compare.
Compare values in an ObjectType.Array. The array is sorted and compared. Each element of the array is further compared according to the result of the typeOf function.
Takes an argument of any type, and if it is ObjectType.Object, it checks if the key/value pair is an exact match.
type CompareOption = Partial<{
// If the option is not passed,
// the comparison is performed as implemented by the compareClass function.
classTypeComparator: (cls1: Object, cls2: Object) => Result;
// If the option is not passed,
// the comparison is performed as implemented by the compareFunction function.
functionTypeComparator: (fun1: Function, fun2: Function, option?: CompareOption) => Result;
}>