UNPKG

lodash-es

Version:

The modern build of lodash exported as ES modules.

46 lines (42 loc) 1.37 kB
import baseGet from './baseGet'; import baseIsEqual from './baseIsEqual'; import baseSlice from './baseSlice'; import isArray from '../lang/isArray'; import isKey from './isKey'; import isStrictComparable from './isStrictComparable'; import last from '../array/last'; import toObject from './toObject'; import toPath from './toPath'; /** * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. * @param {*} srcValue The value to compare. * @returns {Function} Returns the new function. */ function baseMatchesProperty(path, srcValue) { var isArr = isArray(path), isCommon = isKey(path) && isStrictComparable(srcValue), pathKey = (path + ''); path = toPath(path); return function(object) { if (object == null) { return false; } var key = pathKey; object = toObject(object); if ((isArr || !isCommon) && !(key in object)) { object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); if (object == null) { return false; } key = last(path); object = toObject(object); } return object[key] === srcValue ? (srcValue !== undefined || (key in object)) : baseIsEqual(srcValue, object[key], undefined, true); }; } export default baseMatchesProperty;