ldb-change
v4.0.0
Published
Basic object comparison
Downloads
10
Readme
ldb-change
Basic comparison of object literals and arrays to get differences by path
Functions
Typedefs
getDiffs(lObj, rObj, path, options) ⇒ Array.<Diff>
Return an array of paths from an object (lObj
) that don't match another object (rObj
) and the values of each.
Equality comparisons include String, Number, Boolean, Date or set custom comparison with options.compare by path
Each element or key in an Array or literal/plain Object is evaluated (unless options.stopAt set for path)
Kind: global function
| Param | Type | Description | | --- | --- | --- | | lObj | Any | | | rObj | Any | | | path | String | undefined | Path to object attribute in dot notation | | options | GetDiffsOptions | undefined | |
Example
// returns [{path: 'a', lObj: 3, rObj: undefined}]
getDiffs({a: 5}, {c: 22})
Example
// returns [{path: 'a.b', lObj: 3, rObj: 5}, ]
getDiffs({a: {b: 3}}, {a: {b: 5}})
Example
// returns [{path: 'a[0].b.c', lObj: 5, rObj: 7}, ]
getDiffs({a: [{b: {c: 5}}]}, {a: [{b: {c: 7}}]})
Example
// returns [{path: 'a.b', lObj: {c: 8}, rObj: {c: 7}}, ]
getDiffs({a: {b: {c: 8}}}, {a: {b: {c: 7}}}, undefined, {stopAt: {"a.b": true}})
Example
// returns [] (no Diffs because of compare function at a path )
getDiffs({a: 1}, {a: '1'}, undefined, {compare: {"a": (lObj, rObj) => lObj + '' === rObj}})
Diff : Object
Kind: global typedef
| Param | Type | Description | | --- | --- | --- | | path | String | The dot notation path to the property with diff | | lObj | Any | The object or value of the left object compared | | rObj | Any | The object or value of the right object compared |
GetDiffsOptions : Object
Kind: global typedef
| Param | Type | Description |
| --- | --- | --- |
| stopAt | Object | undefined | Object with paths as keys (value='true') where those paths will not be descended; only to determine if there is a difference |
| compare | Object | undefined | Object with paths as keys and value of a function which is to be used to determine if diff a that path; function takes 2 parameters: lObj and rObj and returns true if they match (no diff). path
here can either be a absolute path (eg a[0].board.width
or a deepest path node (eg width
)