Basic comparison of object literals and arrays to get differences by path
- 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)
- Diff :
Object
- GetDiffsOptions :
Object
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}})
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 |
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 ) |