var baseClone = require('./_baseClone'), | |
baseMatches = require('./_baseMatches'); | |
/** Used to compose bitmasks for cloning. */ | |
var CLONE_DEEP_FLAG = 1; | |
/** | |
* Creates a function that performs a partial deep comparison between a given | |
* object and `source`, returning `true` if the given object has equivalent | |
* property values, else `false`. | |
* | |
* **Note:** The created function is equivalent to `_.isMatch` with `source` | |
* partially applied. | |
* | |
* Partial comparisons will match empty array and empty object `source` | |
* values against any array or object value, respectively. See `_.isEqual` | |
* for a list of supported value comparisons. | |
* | |
* @static | |
* @memberOf _ | |
* @since 3.0.0 | |
* @category Util | |
* @param {Object} source The object of property values to match. | |
* @returns {Function} Returns the new spec function. | |
* @example | |
* | |
* var objects = [ | |
* { 'a': 1, 'b': 2, 'c': 3 }, | |
* { 'a': 4, 'b': 5, 'c': 6 } | |
* ]; | |
* | |
* _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); | |
* // => [{ 'a': 4, 'b': 5, 'c': 6 }] | |
*/ | |
function matches(source) { | |
return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); | |
} | |
module.exports = matches; | |