| 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; |