31 lines
824 B
JavaScript
31 lines
824 B
JavaScript
|
var baseIsMatch = require('./baseIsMatch'),
|
||
|
getMatchData = require('./getMatchData'),
|
||
|
toObject = require('./toObject');
|
||
|
|
||
|
/**
|
||
|
* The base implementation of `_.matches` which does not clone `source`.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {Object} source The object of property values to match.
|
||
|
* @returns {Function} Returns the new function.
|
||
|
*/
|
||
|
function baseMatches(source) {
|
||
|
var matchData = getMatchData(source);
|
||
|
if (matchData.length == 1 && matchData[0][2]) {
|
||
|
var key = matchData[0][0],
|
||
|
value = matchData[0][1];
|
||
|
|
||
|
return function(object) {
|
||
|
if (object == null) {
|
||
|
return false;
|
||
|
}
|
||
|
return object[key] === value && (value !== undefined || (key in toObject(object)));
|
||
|
};
|
||
|
}
|
||
|
return function(object) {
|
||
|
return baseIsMatch(object, matchData);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = baseMatches;
|