deep-match
v1.0.0
Published
Check if two values deeply match
Downloads
744
Maintainers
Readme
Check if two values deeply match
deepMatch(object, example)
All properties and nested objects mentioned in the example
are required to be
present in object
.
// two objects that look exactly the same
deepMatch({ a: 1, b: 2 } }, { a: 1, b: 2 }); // true
// additional properties on the left-hand side are ignored
deepMatch({ a: 1, b: 2 } }, { a: 1 }); // true
// everything on the right-hand side is required
deepMatch({ a: 1 } }, { a: 1, b: 2 }); // false
// same for arrays
deepMatch([1, 2, 3], [1, 2]); // true
deepMatch([1, 2, 3], [3, 4]); // false
Regular expressions and functions in the example
are run against the corresponding values in the object
:
deepMatch('aaa', /a+/); // true
deepMatch('bbb', /a+/); // false
deepMatch(['aaa', 'bbb'], [/a+/]); // true
deepMatch(['aaa', 'bbb'], [/a+/, /b+/]); // true
deepMatch(['aaa', 'ccc'], [/a+/, /b+/]); // false
deepMatch([1, 2, 3], [v => v === 1]); // true
Rules
Values are compared according to the following rules:
- Identical values always match.
- Values of different types never match.
- Values that are no objects only match if they are identical (see above).
- Null values (which are also objects) only match if both are null.
- Arrays match if all items in the example match.
- Objects match if all properties in the example match.
License
MIT