Lines Matching +defs:object +defs:keys

93   var argsTag = '[object Arguments]',
94 arrayTag = '[object Array]',
95 asyncTag = '[object AsyncFunction]',
96 boolTag = '[object Boolean]',
97 dateTag = '[object Date]',
98 domExcTag = '[object DOMException]',
99 errorTag = '[object Error]',
100 funcTag = '[object Function]',
101 genTag = '[object GeneratorFunction]',
102 mapTag = '[object Map]',
103 numberTag = '[object Number]',
104 nullTag = '[object Null]',
105 objectTag = '[object Object]',
106 promiseTag = '[object Promise]',
107 proxyTag = '[object Proxy]',
108 regexpTag = '[object RegExp]',
109 setTag = '[object Set]',
110 stringTag = '[object String]',
111 symbolTag = '[object Symbol]',
112 undefinedTag = '[object Undefined]',
113 weakMapTag = '[object WeakMap]',
114 weakSetTag = '[object WeakSet]';
116 var arrayBufferTag = '[object ArrayBuffer]',
117 dataViewTag = '[object DataView]',
118 float32Tag = '[object Float32Array]',
119 float64Tag = '[object Float64Array]',
120 int8Tag = '[object Int8Array]',
121 int16Tag = '[object Int16Array]',
122 int32Tag = '[object Int32Array]',
123 uint8Tag = '[object Uint8Array]',
124 uint8ClampedTag = '[object Uint8ClampedArray]',
125 uint16Tag = '[object Uint16Array]',
126 uint32Tag = '[object Uint32Array]';
201 var reIsHostCtor = /^\[object .+?Constructor\]$/;
295 /** Used to assign default `context` object properties. */
430 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
433 var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
435 /** Used as a reference to the global object. */
439 var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
442 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
501 * @param {Function} iteratee The iteratee to transform keys.
502 * @param {Object} accumulator The initial aggregated object.
893 return function(object) {
894 return object == null ? undefined : object[key];
902 * @param {Object} object The object to query.
905 function basePropertyOf(object) {
907 return object == null ? undefined : object[key];
997 * of key-value pairs for `object` corresponding to the property names of `props`.
1000 * @param {Object} object The object to query.
1004 function baseToPairs(object, props) {
1006 return [key, object[key]];
1038 * array of `object` property values corresponding to the property names
1042 * @param {Object} object The object to query.
1046 function baseValues(object, props) {
1048 return object[key];
1148 * Gets the value at `key` of `object`.
1151 * @param {Object} [object] The object to query.
1155 function getValue(object, key) {
1156 return object == null ? undefined : object[key];
1420 * Create a new pristine `lodash` function using the `context` object.
1426 * @param {Object} [context=root] The context object.
1481 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
1487 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
1537 nativeKeys = overArg(Object.keys, Object),
1574 * Creates a `lodash` object which wraps `value` to enable implicit method
1622 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
1704 * properties to the created object.
1707 * @param {Object} proto The object to inherit from.
1708 * @returns {Object} Returns the new object.
1711 function object() {}
1719 object.prototype = proto;
1720 var result = new object;
1721 object.prototype = undefined;
1786 * Used to reference the data object in the template text.
1821 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
1838 * Creates a clone of the lazy wrapper object.
1843 * @returns {Object} Returns the cloned `LazyWrapper` object.
1862 * @returns {Object} Returns the new reversed `LazyWrapper` object.
1940 * Creates a hash object.
2044 * Creates an list cache object.
2161 * Creates a map cache object to store key-value pairs.
2265 * Creates an array cache object to store unique values.
2316 * Creates a stack cache object to store key-value pairs.
2492 * @param {Object} object The object to modify.
2496 function assignMergeValue(object, key, value) {
2497 if ((value !== undefined && !eq(object[key], value)) ||
2498 (value === undefined && !(key in object))) {
2499 baseAssignValue(object, key, value);
2504 * Assigns `value` to `key` of `object` if the existing value is not equivalent
2509 * @param {Object} object The object to modify.
2513 function assignValue(object, key, value) {
2514 var objValue = object[key];
2515 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
2516 (value === undefined && !(key in object))) {
2517 baseAssignValue(object, key, value);
2540 * Aggregates elements of `collection` on `accumulator` with keys transformed
2546 * @param {Function} iteratee The iteratee to transform keys.
2547 * @param {Object} accumulator The initial aggregated object.
2562 * @param {Object} object The destination object.
2563 * @param {Object} source The source object.
2564 * @returns {Object} Returns `object`.
2566 function baseAssign(object, source) {
2567 return object && copyObject(source, keys(source), object);
2575 * @param {Object} object The destination object.
2576 * @param {Object} source The source object.
2577 * @returns {Object} Returns `object`.
2579 function baseAssignIn(object, source) {
2580 return object && copyObject(source, keysIn(source), object);
2588 * @param {Object} object The object to modify.
2592 function baseAssignValue(object, key, value) {
2594 defineProperty(object, key, {
2601 object[key] = value;
2609 * @param {Object} object The object to iterate over.
2613 function baseAt(object, paths) {
2617 skip = object == null;
2620 result[index] = skip ? undefined : get(object, paths[index]);
2658 * @param {Object} [object] The parent object of `value`.
2662 function baseClone(value, bitmask, customizer, key, object, stack) {
2669 result = object ? customizer(value, key, object, stack) : customizer(value);
2690 if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
2699 return object ? value : {};
2724 : (isFlat ? keysIn : keys);
2742 * @param {Object} source The object of property predicates to conform to.
2746 var props = keys(source);
2747 return function(object) {
2748 return baseConformsTo(object, source, props);
2756 * @param {Object} object The object to inspect.
2757 * @param {Object} source The object of property predicates to conform to.
2758 * @returns {boolean} Returns `true` if `object` conforms, else `false`.
2760 function baseConformsTo(object, source, props) {
2762 if (object == null) {
2765 object = Object(object);
2769 value = object[key];
2771 if ((value === undefined && !(key in object)) || !predicate(value)) {
2786 * @returns {number|Object} Returns the timer id or timeout object.
2999 * The base implementation of `baseForOwn` which iterates over `object`
3004 * @param {Object} object The object to iterate over.
3006 * @param {Function} keysFunc The function to get the keys of `object`.
3007 * @returns {Object} Returns `object`.
3016 * @param {Object} object The object to iterate over.
3018 * @param {Function} keysFunc The function to get the keys of `object`.
3019 * @returns {Object} Returns `object`.
3027 * @param {Object} object The object to iterate over.
3029 * @returns {Object} Returns `object`.
3031 function baseForOwn(object, iteratee) {
3032 return object && baseFor(object, iteratee, keys);
3039 * @param {Object} object The object to iterate over.
3041 * @returns {Object} Returns `object`.
3043 function baseForOwnRight(object, iteratee) {
3044 return object && baseForRight(object, iteratee, keys);
3049 * `object` function property names filtered from `props`.
3052 * @param {Object} object The object to inspect.
3056 function baseFunctions(object, props) {
3058 return isFunction(object[key]);
3066 * @param {Object} object The object to query.
3070 function baseGet(object, path) {
3071 path = castPath(path, object);
3076 while (object != null && index < length) {
3077 object = object[toKey(path[index++])];
3079 return (index && index == length) ? object : undefined;
3085 * symbols of `object`.
3088 * @param {Object} object The object to query.
3089 * @param {Function} keysFunc The function to get the keys of `object`.
3090 * @param {Function} symbolsFunc The function to get the symbols of `object`.
3093 function baseGetAllKeys(object, keysFunc, symbolsFunc) {
3094 var result = keysFunc(object);
3095 return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
3131 * @param {Object} [object] The object to query.
3135 function baseHas(object, key) {
3136 return object != null && hasOwnProperty.call(object, key);
3143 * @param {Object} [object] The object to query.
3147 function baseHasIn(object, key) {
3148 return object != null && key in Object(object);
3229 * `object` with values transformed by `iteratee` and set by `setter`.
3232 * @param {Object} object The object to iterate over.
3235 * @param {Object} accumulator The initial inverted object.
3238 function baseInverter(object, setter, iteratee, accumulator) {
3239 baseForOwn(object, function(value, key, object) {
3240 setter(accumulator, iteratee(value), key, object);
3250 * @param {Object} object The object to query.
3255 function baseInvoke(object, path, args) {
3256 path = castPath(path, object);
3257 object = parent(object, path);
3258 var func = object == null ? object : object[toKey(last(path))];
3259 return func == null ? undefined : apply(func, object, args);
3267 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
3289 * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
3325 * @param {Object} object The object to compare.
3326 * @param {Object} other The other object to compare.
3330 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
3333 function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
3334 var objIsArr = isArray(object),
3336 objTag = objIsArr ? arrayTag : getTag(object),
3346 if (isSameTag && isBuffer(object)) {
3355 return (objIsArr || isTypedArray(object))
3356 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
3357 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
3360 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
3364 var objUnwrapped = objIsWrapped ? object.value() : object,
3375 return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
3393 * @param {Object} object The object to inspect.
3394 * @param {Object} source The object of property values to match.
3397 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
3399 function baseIsMatch(object, source, matchData, customizer) {
3404 if (object == null) {
3407 object = Object(object);
3411 ? data[1] !== object[data[0]]
3412 : !(data[0] in object)
3420 objValue = object[key],
3424 if (objValue === undefined && !(key in object)) {
3430 var result = customizer(objValue, srcValue, key, object, source, stack);
3509 if (typeof value == 'object') {
3518 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
3521 * @param {Object} object The object to query.
3524 function baseKeys(object) {
3525 if (!isPrototype(object)) {
3526 return nativeKeys(object);
3529 for (var key in Object(object)) {
3530 if (hasOwnProperty.call(object, key) && key != 'constructor') {
3541 * @param {Object} object The object to query.
3544 function baseKeysIn(object) {
3545 if (!isObject(object)) {
3546 return nativeKeysIn(object);
3548 var isProto = isPrototype(object),
3551 for (var key in object) {
3552 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
3594 * @param {Object} source The object of property values to match.
3602 return function(object) {
3603 return object === source || baseIsMatch(object, source, matchData);
3619 return function(object) {
3620 var objValue = get(object, path);
3622 ? hasIn(object, path)
3631 * @param {Object} object The destination object.
3632 * @param {Object} source The source object.
3638 function baseMerge(object, source, srcIndex, customizer, stack) {
3639 if (object === source) {
3645 baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
3649 ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
3655 assignMergeValue(object, key, newValue);
3666 * @param {Object} object The destination object.
3667 * @param {Object} source The source object.
3675 function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
3676 var objValue = safeGet(object, key),
3681 assignMergeValue(object, key, stacked);
3685 ? customizer(objValue, srcValue, (key + ''), object, source, stack)
3734 assignMergeValue(object, key, newValue);
3787 return baseSortBy(result, function(object, other) {
3788 return compareMultiple(object, other, orders);
3797 * @param {Object} object The source object.
3799 * @returns {Object} Returns the new object.
3801 function basePick(object, paths) {
3802 return basePickBy(object, paths, function(value, path) {
3803 return hasIn(object, path);
3811 * @param {Object} object The source object.
3814 * @returns {Object} Returns the new object.
3816 function basePickBy(object, paths, predicate) {
3823 value = baseGet(object, path);
3826 baseSet(result, castPath(path, object), value);
3840 return function(object) {
3841 return baseGet(object, path);
4014 * @param {Object} object The object to modify.
4018 * @returns {Object} Returns `object`.
4020 function baseSet(object, path, value, customizer) {
4021 if (!isObject(object)) {
4022 return object;
4024 path = castPath(path, object);
4029 nested = object;
4036 return object;
4051 return object;
4367 * @param {Object} object The object to modify.
4371 function baseUnset(object, path) {
4372 path = castPath(path, object);
4373 object = parent(object, path);
4374 return object == null || delete object[toKey(last(path))];
4381 * @param {Object} object The object to modify.
4385 * @returns {Object} Returns `object`.
4387 function baseUpdate(object, path, updater, customizer) {
4388 return baseSet(object, path, updater(baseGet(object, path)), customizer);
4472 * @returns {Object} Returns the new object.
4488 * Casts `value` to an empty array if it's not an array like object.
4492 * @returns {Array|Object} Returns the cast array-like object.
4514 * @param {Object} [object] The object to query keys on.
4517 function castPath(value, object) {
4521 return isKey(value, object) ? [value] : stringToPath(toString(value));
4554 * @param {number|Object} id The timer id or timeout object of the timer to clear.
4619 * Creates a clone of the `symbol` object.
4622 * @param {Object} symbol The symbol object to clone.
4623 * @returns {Object} Returns the cloned symbol object.
4689 * @param {Object} object The object to compare.
4690 * @param {Object} other The other object to compare.
4692 * @returns {number} Returns the sort order indicator for `object`.
4694 function compareMultiple(object, other, orders) {
4696 objCriteria = object.criteria,
4713 // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
4718 return object.index - other.index;
4813 * Copies properties of `source` to `object`.
4816 * @param {Object} source The object to copy properties from.
4818 * @param {Object} [object={}] The object to copy properties to.
4820 * @returns {Object} Returns `object`.
4822 function copyObject(source, props, object, customizer) {
4823 var isNew = !object;
4824 object || (object = {});
4833 ? customizer(object[key], source[key], key, object, source)
4840 baseAssignValue(object, key, newValue);
4842 assignValue(object, key, newValue);
4845 return object;
4849 * Copies own symbols of `source` to `object`.
4852 * @param {Object} source The object to copy symbols from.
4853 * @param {Object} [object={}] The object to copy symbols to.
4854 * @returns {Object} Returns `object`.
4856 function copySymbols(source, object) {
4857 return copyObject(source, getSymbols(source), object);
4861 * Copies own and inherited symbols of `source` to `object`.
4864 * @param {Object} source The object to copy symbols from.
4865 * @param {Object} [object={}] The object to copy symbols to.
4866 * @returns {Object} Returns `object`.
4868 function copySymbolsIn(source, object) {
4869 return copyObject(source, getSymbolsIn(source), object);
4877 * @param {Function} [initializer] The accumulator object initializer.
4897 return baseRest(function(object, sources) {
4911 object = Object(object);
4915 assigner(object, source, index, customizer);
4918 return object;
4959 return function(object, iteratee, keysFunc) {
4961 iterable = Object(object),
4962 props = keysFunc(object),
4971 return object;
5118 collection = keys(collection);
5269 return function(object, iteratee) {
5270 return baseInverter(object, setter, toIteratee(iteratee), {});
5495 * Creates a set object of `values`.
5509 * @param {Function} keysFunc The function to get the keys of a given object.
5513 return function(object) {
5514 var tag = getTag(object);
5516 return mapToArray(object);
5519 return setToPairs(object);
5521 return baseToPairs(object, keysFunc(object));
5607 * of source objects to the destination object for all destination properties
5614 * @param {Object} object The parent object of `objValue`.
5617 function customDefaultsAssignIn(objValue, srcValue, key, object) {
5619 (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
5633 * @param {Object} object The parent object of `objValue`.
5634 * @param {Object} source The parent object of `srcValue`.
5639 function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
5745 * @param {Object} object The object to compare.
5746 * @param {Object} other The other object to compare.
5751 * @param {Object} stack Tracks traversed `object` and `other` objects.
5754 function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
5757 if ((object.byteLength != other.byteLength) ||
5758 (object.byteOffset != other.byteOffset)) {
5761 object = object.buffer;
5765 if ((object.byteLength != other.byteLength) ||
5766 !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
5776 return eq(+object, +other);
5779 return object.name == other.name && object.message == other.message;
5786 return object == (other + '');
5795 if (object.size != other.size && !isPartial) {
5799 var stacked = stack.get(object);
5806 stack.set(object, other);
5807 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
5808 stack['delete'](object);
5813 return symbolValueOf.call(object) == symbolValueOf.call(other);
5824 * @param {Object} object The object to compare.
5825 * @param {Object} other The other object to compare.
5829 * @param {Object} stack Tracks traversed `object` and `other` objects.
5832 function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
5834 objProps = getAllKeys(object),
5850 var objStacked = stack.get(object);
5853 return objStacked == other && othStacked == object;
5856 stack.set(object, other);
5857 stack.set(other, object);
5862 var objValue = object[key],
5867 ? customizer(othValue, objValue, key, other, object, stack)
5868 : customizer(objValue, othValue, key, object, other, stack);
5881 var objCtor = object.constructor,
5884 // Non `Object` object instances with different constructors are not equal.
5886 ('constructor' in object && 'constructor' in other) &&
5892 stack['delete'](object);
5909 * Creates an array of own enumerable property names and symbols of `object`.
5912 * @param {Object} object The object to query.
5915 function getAllKeys(object) {
5916 return baseGetAllKeys(object, keys, getSymbols);
5921 * symbols of `object`.
5924 * @param {Object} object The object to query.
5927 function getAllKeysIn(object) {
5928 return baseGetAllKeys(object, keysIn, getSymbolsIn);
5972 var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
5973 return object.placeholder;
6009 * Gets the property names, values, and compare flags of `object`.
6012 * @param {Object} object The object to query.
6013 * @returns {Array} Returns the match data of `object`.
6015 function getMatchData(object) {
6016 var result = keys(object),
6021 value = object[key];
6029 * Gets the native function at `key` of `object`.
6032 * @param {Object} object The object to query.
6036 function getNative(object, key) {
6037 var value = getValue(object, key);
6069 * Creates an array of the own enumerable symbols of `object`.
6072 * @param {Object} object The object to query.
6075 var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
6076 if (object == null) {
6079 object = Object(object);
6080 return arrayFilter(nativeGetSymbols(object), function(symbol) {
6081 return propertyIsEnumerable.call(object, symbol);
6086 * Creates an array of the own and inherited enumerable symbols of `object`.
6089 * @param {Object} object The object to query.
6092 var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
6094 while (object) {
6095 arrayPush(result, getSymbols(object));
6096 object = getPrototype(object);
6141 * @returns {Object} Returns an object containing the `start` and `end`
6175 * Checks if `path` exists on `object`.
6178 * @param {Object} object The object to query.
6183 function hasPath(object, path, hasFunc) {
6184 path = castPath(path, object);
6192 if (!(result = object != null && hasFunc(object, key))) {
6195 object = object[key];
6200 length = object == null ? 0 : object.length;
6202 (isArray(object) || isArguments(object));
6225 * Initializes an object clone.
6228 * @param {Object} object The object to clone.
6231 function initCloneObject(object) {
6232 return (typeof object.constructor == 'function' && !isPrototype(object))
6233 ? baseCreate(getPrototype(object))
6238 * Initializes an object clone based on its `toStringTag`.
6244 * @param {Object} object The object to clone.
6245 * @param {string} tag The `toStringTag` of the object to clone.
6249 function initCloneByTag(object, tag, isDeep) {
6250 var Ctor = object.constructor;
6253 return cloneArrayBuffer(object);
6257 return new Ctor(+object);
6260 return cloneDataView(object, isDeep);
6265 return cloneTypedArray(object, isDeep);
6272 return new Ctor(object);
6275 return cloneRegExp(object);
6281 return cloneSymbol(object);
6305 * Checks if `value` is a flattenable `arguments` object or array.
6340 * @param {*} object The potential iteratee object argument.
6344 function isIterateeCall(value, index, object) {
6345 if (!isObject(object)) {
6350 ? (isArrayLike(object) && isIndex(index, object.length))
6351 : (type == 'string' && index in object)
6353 return eq(object[index], value);
6363 * @param {Object} [object] The object to query keys on.
6366 function isKey(value, object) {
6376 (object != null && value in Object(object));
6380 * Checks if `value` is suitable for use as unique object key.
6436 * Checks if `value` is likely a prototype object.
6471 return function(object) {
6472 if (object == null) {
6475 return object[key] === srcValue &&
6476 (srcValue !== undefined || (key in Object(object)));
6573 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
6577 * @param {Object} object The object to query.
6580 function nativeKeysIn(object) {
6582 if (object != null) {
6583 for (var key in Object(object)) {
6632 * Gets the parent value at `path` of `object`.
6635 * @param {Object} object The object to query.
6639 function parent(object, path) {
6640 return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
6669 * @param {Object} object The object to query.
6673 function safeGet(object, key) {
6674 if (key === 'constructor' && typeof object[key] === 'function') {
6682 return object[key];
6707 * @returns {number|Object} Returns the timer id or timeout object.
7443 * The inverse of `_.toPairs`; this method returns an object composed
7451 * @returns {Object} Returns the new object.
8713 * @returns {Object} Returns the new object.
8732 * @returns {Object} Returns the new object.
8873 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
8875 * _(object).at(['a[0].b.c', 'a[1]']).value();
8882 interceptor = function(object) { return baseAt(object, paths); };
8964 * Gets the next value on a wrapped object following the
9002 * @returns {Object} Returns the wrapper object.
9120 * Creates an object composed of keys generated from the results of running
9130 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9131 * @returns {Object} Returns the composed aggregate object.
9266 * // => object for 'barney'
9270 * // => object for 'pebbles'
9274 * // => object for 'fred'
9278 * // => object for 'barney'
9385 * or `_.forOwn` for object iteration.
9439 * Creates an object composed of keys generated from the results of running
9450 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9451 * @returns {Object} Returns the composed aggregate object.
9547 * Creates an object composed of keys generated from the results of running
9557 * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
9558 * @returns {Object} Returns the composed aggregate object.
9840 * Gets `n` random elements at unique keys from `collection` up to the
10151 * var object = { 'user': 'fred' };
10153 * var bound = _.bind(greet, object, 'hi');
10158 * var bound = _.bind(greet, object, _, '!');
10172 * Creates a function that invokes the method at `object[key]` with `partials`
10187 * @param {Object} object The object to invoke the method on.
10193 * var object = {
10200 * var bound = _.bindKey(object, 'greet', 'hi');
10204 * object.greet = function(greeting, punctuation) {
10212 * var bound = _.bindKey(object, 'greet', _, '!');
10216 var bindKey = baseRest(function(object, key, partials) {
10222 return createWrap(key, bitmask, object, partials, holders);
10345 * @param {Object} [options={}] The options object.
10574 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
10586 * var object = { 'a': 1, 'b': 2 };
10590 * values(object);
10596 * object.a = 2;
10597 * values(object);
10601 * values.cache.set(object, ['a', 'b']);
10602 * values(object);
10947 * @param {Object} [options={}] The options object.
11079 * as plain objects. An empty object is returned for uncloneable values such
11105 * up to four arguments; (value [, index|key, object, stack]).
11193 * Checks if `object` conforms to `source` by invoking the predicate
11194 * properties of `source` with the corresponding property values of `object`.
11203 * @param {Object} object The object to inspect.
11204 * @param {Object} source The object of property predicates to conform to.
11205 * @returns {boolean} Returns `true` if `object` conforms, else `false`.
11208 * var object = { 'a': 1, 'b': 2 };
11210 * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
11213 * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
11216 function conformsTo(object, source) {
11217 return source == null || baseConformsTo(object, source, keys(source));
11234 * var object = { 'a': 1 };
11237 * _.eq(object, object);
11240 * _.eq(object, other);
11309 * Checks if `value` is likely an `arguments` object.
11316 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
11332 * Checks if `value` is classified as an `Array` object.
11357 * Checks if `value` is classified as an `ArrayBuffer` object.
11406 * is an object.
11413 * @returns {boolean} Returns `true` if `value` is an array-like object,
11434 * Checks if `value` is classified as a boolean primitive or object.
11475 * Checks if `value` is classified as a `Date` object.
11482 * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
11515 * Checks if `value` is an empty object, collection, map, or set.
11590 * var object = { 'a': 1 };
11593 * _.isEqual(object, other);
11596 * object === other;
11607 * six arguments: (objValue, othValue [, index|key, object, other, stack]).
11643 * `SyntaxError`, `TypeError`, or `URIError` object.
11650 * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
11699 * Checks if `value` is classified as a `Function` object.
11720 // in Safari 9 which returns 'object' for typed arrays and other constructors.
11796 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
11813 return value != null && (type == 'object' || type == 'function');
11817 * Checks if `value` is object-like. A value is object-like if it's not `null`
11818 * and has a `typeof` result of "object".
11825 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
11841 return value != null && typeof value == 'object';
11845 * Checks if `value` is classified as a `Map` object.
11864 * Performs a partial deep comparison between `object` and `source` to
11865 * determine if `object` contains equivalent property values.
11870 * Partial comparisons will match empty array and empty object `source`
11871 * values against any array or object value, respectively. See `_.isEqual`
11878 * @param {Object} object The object to inspect.
11879 * @param {Object} source The object of property values to match.
11880 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
11883 * var object = { 'a': 1, 'b': 2 };
11885 * _.isMatch(object, { 'b': 2 });
11888 * _.isMatch(object, { 'b': 1 });
11891 function isMatch(object, source) {
11892 return object === source || baseIsMatch(object, source, getMatchData(source));
11899 * arguments: (objValue, srcValue, index|key, object, source).
11905 * @param {Object} object The object to inspect.
11906 * @param {Object} source The object of property values to match.
11908 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
11921 * var object = { 'greeting': 'hello' };
11924 * _.isMatchWith(object, source, customizer);
11927 function isMatchWith(object, source, customizer) {
11929 return baseIsMatch(object, source, getMatchData(source), customizer);
12046 * Checks if `value` is classified as a `Number` primitive or object.
12077 * Checks if `value` is a plain object, that is, an object created by the
12085 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
12118 * Checks if `value` is classified as a `RegExp` object.
12168 * Checks if `value` is classified as a `Set` object.
12187 * Checks if `value` is classified as a `String` primitive or object.
12209 * Checks if `value` is classified as a `Symbol` primitive or object.
12271 * Checks if `value` is classified as a `WeakMap` object.
12292 * Checks if `value` is classified as a `WeakSet` object.
12473 * array-like object.
12547 * Converts `value` to a plain object flattening inherited enumerable string
12548 * keyed properties of `value` to own properties of the plain object.
12555 * @returns {Object} Returns the converted plain object.
12633 * destination object. Source objects are applied from left to right.
12636 * **Note:** This method mutates `object` and is loosely based on
12643 * @param {Object} object The destination object.
12645 * @returns {Object} Returns `object`.
12663 var assign = createAssigner(function(object, source) {
12665 copyObject(source, keys(source), object);
12670 assignValue(object, key, source[key]);
12679 * **Note:** This method mutates `object`.
12686 * @param {Object} object The destination object.
12688 * @returns {Object} Returns `object`.
12706 var assignIn = createAssigner(function(object, source) {
12707 copyObject(source, keysIn(source), object);
12714 * is invoked with five arguments: (objValue, srcValue, key, object, source).
12716 * **Note:** This method mutates `object`.
12723 * @param {Object} object The destination object.
12726 * @returns {Object} Returns `object`.
12739 var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
12740 copyObject(source, keysIn(source), object, customizer);
12747 * is invoked with five arguments: (objValue, srcValue, key, object, source).
12749 * **Note:** This method mutates `object`.
12755 * @param {Object} object The destination object.
12758 * @returns {Object} Returns `object`.
12771 var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
12772 copyObject(source, keys(source), object, customizer);
12776 * Creates an array of values corresponding to `paths` of `object`.
12782 * @param {Object} object The object to iterate over.
12787 * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
12789 * _.at(object, ['a[0].b.c', 'a[1]']);
12795 * Creates an object that inherits from the `prototype` object. If a
12796 * `properties` object is given, its own enumerable string keyed properties
12797 * are assigned to the created object.
12803 * @param {Object} prototype The object to inherit from.
12804 * @param {Object} [properties] The properties to assign to the object.
12805 * @returns {Object} Returns the new object.
12835 * objects to the destination object for all destination properties that
12839 * **Note:** This method mutates `object`.
12845 * @param {Object} object The destination object.
12847 * @returns {Object} Returns `object`.
12854 var defaults = baseRest(function(object, sources) {
12855 object = Object(object);
12873 var value = object[key];
12876 (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
12877 object[key] = source[key];
12882 return object;
12889 * **Note:** This method mutates `object`.
12895 * @param {Object} object The destination object.
12897 * @returns {Object} Returns `object`.
12917 * @param {Object} object The object to inspect.
12944 function findKey(object, predicate) {
12945 return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
12956 * @param {Object} object The object to inspect.
12983 function findLastKey(object, predicate) {
12984 return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
12989 * object and invokes `iteratee` for each property. The iteratee is invoked
12990 * with three arguments: (value, key, object). Iteratee functions may exit
12997 * @param {Object} object The object to iterate over.
12999 * @returns {Object} Returns `object`.
13015 function forIn(object, iteratee) {
13016 return object == null
13017 ? object
13018 : baseFor(object, getIteratee(iteratee, 3), keysIn);
13023 * `object` in the opposite order.
13029 * @param {Object} object The object to iterate over.
13031 * @returns {Object} Returns `object`.
13047 function forInRight(object, iteratee) {
13048 return object == null
13049 ? object
13050 : baseForRight(object, getIteratee(iteratee, 3), keysIn);
13054 * Iterates over own enumerable string keyed properties of an object and
13056 * arguments: (value, key, object). Iteratee functions may exit iteration
13063 * @param {Object} object The object to iterate over.
13065 * @returns {Object} Returns `object`.
13081 function forOwn(object, iteratee) {
13082 return object && baseForOwn(object, getIteratee(iteratee, 3));
13087 * `object` in the opposite order.
13093 * @param {Object} object The object to iterate over.
13095 * @returns {Object} Returns `object`.
13111 function forOwnRight(object, iteratee) {
13112 return object && baseForOwnRight(object, getIteratee(iteratee, 3));
13117 * of `object`.
13123 * @param {Object} object The object to inspect.
13138 function functions(object) {
13139 return object == null ? [] : baseFunctions(object, keys(object));
13144 * enumerable properties of `object`.
13150 * @param {Object} object The object to inspect.
13165 function functionsIn(object) {
13166 return object == null ? [] : baseFunctions(object, keysIn(object));
13170 * Gets the value at `path` of `object`. If the resolved value is
13177 * @param {Object} object The object to query.
13183 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
13185 * _.get(object, 'a[0].b.c');
13188 * _.get(object, ['a', '0', 'b', 'c']);
13191 * _.get(object, 'a.b.c', 'default');
13194 function get(object, path, defaultValue) {
13195 var result = object == null ? undefined : baseGet(object, path);
13200 * Checks if `path` is a direct property of `object`.
13206 * @param {Object} object The object to query.
13211 * var object = { 'a': { 'b': 2 } };
13214 * _.has(object, 'a');
13217 * _.has(object, 'a.b');
13220 * _.has(object, ['a', 'b']);
13226 function has(object, path) {
13227 return object != null && hasPath(object, path, baseHas);
13231 * Checks if `path` is a direct or inherited property of `object`.
13237 * @param {Object} object The object to query.
13242 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
13244 * _.hasIn(object, 'a');
13247 * _.hasIn(object, 'a.b');
13250 * _.hasIn(object, ['a', 'b']);
13253 * _.hasIn(object, 'b');
13256 function hasIn(object, path) {
13257 return object != null && hasPath(object, path, baseHasIn);
13261 * Creates an object composed of the inverted keys and values of `object`.
13262 * If `object` contains duplicate values, subsequent values overwrite
13269 * @param {Object} object The object to invert.
13270 * @returns {Object} Returns the new inverted object.
13273 * var object = { 'a': 1, 'b': 2, 'c': 1 };
13275 * _.invert(object);
13288 * This method is like `_.invert` except that the inverted object is generated
13289 * from the results of running each element of `object` thru `iteratee`. The
13290 * corresponding inverted value of each inverted key is an array of keys
13298 * @param {Object} object The object to invert.
13300 * @returns {Object} Returns the new inverted object.
13303 * var object = { 'a': 1, 'b': 2, 'c': 1 };
13305 * _.invertBy(object);
13308 * _.invertBy(object, function(value) {
13327 * Invokes the method at `path` of `object`.
13333 * @param {Object} object The object to query.
13339 * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
13341 * _.invoke(object, 'a[0].b.c.slice', 1, 3);
13347 * Creates an array of the own enumerable property names of `object`.
13349 * **Note:** Non-object values are coerced to objects. See the
13350 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
13357 * @param {Object} object The object to query.
13368 * _.keys(new Foo);
13371 * _.keys('hi');
13374 function keys(object) {
13375 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
13379 * Creates an array of the own and inherited enumerable property names of `object`.
13381 * **Note:** Non-object values are coerced to objects.
13387 * @param {Object} object The object to query.
13401 function keysIn(object) {
13402 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
13406 * The opposite of `_.mapValues`; this method creates an object with the
13407 * same values as `object` and keys generated by running each own enumerable
13408 * string keyed property of `object` thru `iteratee`. The iteratee is invoked
13409 * with three arguments: (value, key, object).
13415 * @param {Object} object The object to iterate over.
13417 * @returns {Object} Returns the new mapped object.
13426 function mapKeys(object, iteratee) {
13430 baseForOwn(object, function(value, key, object) {
13431 baseAssignValue(result, iteratee(value, key, object), value);
13437 * Creates an object with the same keys as `object` and values generated
13438 * by running each own enumerable string keyed property of `object` thru
13440 * (value, key, object).
13446 * @param {Object} object The object to iterate over.
13448 * @returns {Object} Returns the new mapped object.
13464 function mapValues(object, iteratee) {
13468 baseForOwn(object, function(value, key, object) {
13469 baseAssignValue(result, key, iteratee(value, key, object));
13477 * destination object. Source properties that resolve to `undefined` are
13478 * skipped if a destination value exists. Array and plain object properties
13483 * **Note:** This method mutates `object`.
13489 * @param {Object} object The destination object.
13491 * @returns {Object} Returns `object`.
13494 * var object = {
13502 * _.merge(object, other);
13505 var merge = createAssigner(function(object, source, srcIndex) {
13506 baseMerge(object, source, srcIndex);
13514 * (objValue, srcValue, key, object, source, stack).
13516 * **Note:** This method mutates `object`.
13522 * @param {Object} object The destination object.
13525 * @returns {Object} Returns `object`.
13534 * var object = { 'a': [1], 'b': [2] };
13537 * _.mergeWith(object, other, customizer);
13540 var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
13541 baseMerge(object, source, srcIndex, customizer);
13545 * The opposite of `_.pick`; this method creates an object composed of the
13546 * own and inherited enumerable property paths of `object` that are not omitted.
13554 * @param {Object} object The source object.
13556 * @returns {Object} Returns the new object.
13559 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13561 * _.omit(object, ['a', 'c']);
13564 var omit = flatRest(function(object, paths) {
13566 if (object == null) {
13571 path = castPath(path, object);
13575 copyObject(object, getAllKeysIn(object), result);
13587 * The opposite of `_.pickBy`; this method creates an object composed of
13588 * the own and inherited enumerable string keyed properties of `object` that
13596 * @param {Object} object The source object.
13598 * @returns {Object} Returns the new object.
13601 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13603 * _.omitBy(object, _.isNumber);
13606 function omitBy(object, predicate) {
13607 return pickBy(object, negate(getIteratee(predicate)));
13611 * Creates an object composed of the picked `object` properties.
13617 * @param {Object} object The source object.
13619 * @returns {Object} Returns the new object.
13622 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13624 * _.pick(object, ['a', 'c']);
13627 var pick = flatRest(function(object, paths) {
13628 return object == null ? {} : basePick(object, paths);
13632 * Creates an object composed of the `object` properties `predicate` returns
13639 * @param {Object} object The source object.
13641 * @returns {Object} Returns the new object.
13644 * var object = { 'a': 1, 'b': '2', 'c': 3 };
13646 * _.pickBy(object, _.isNumber);
13649 function pickBy(object, predicate) {
13650 if (object == null) {
13653 var props = arrayMap(getAllKeysIn(object), function(prop) {
13657 return basePickBy(object, props, function(value, path) {
13664 * function it's invoked with the `this` binding of its parent object and
13671 * @param {Object} object The object to query.
13677 * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
13679 * _.result(object, 'a[0].b.c1');
13682 * _.result(object, 'a[0].b.c2');
13685 * _.result(object, 'a[0].b.c3', 'default');
13688 * _.result(object, 'a[0].b.c3', _.constant('default'));
13691 function result(object, path, defaultValue) {
13692 path = castPath(path, object);
13700 object = undefined;
13703 var value = object == null ? undefined : object[toKey(path[index])];
13708 object = isFunction(value) ? value.call(object) : value;
13710 return object;
13714 * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
13719 * **Note:** This method mutates `object`.
13725 * @param {Object} object The object to modify.
13728 * @returns {Object} Returns `object`.
13731 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
13733 * _.set(object, 'a[0].b.c', 4);
13734 * console.log(object.a[0].b.c);
13737 * _.set(object, ['x', '0', 'y', 'z'], 5);
13738 * console.log(object.x[0].y.z);
13741 function set(object, path, value) {
13742 return object == null ? object : baseSet(object, path, value);
13751 * **Note:** This method mutates `object`.
13757 * @param {Object} object The object to modify.
13761 * @returns {Object} Returns `object`.
13764 * var object = {};
13766 * _.setWith(object, '[0][1]', 'a', Object);
13769 function setWith(object, path, value, customizer) {
13771 return object == null ? object : baseSet(object, path, value, customizer);
13775 * Creates an array of own enumerable string keyed-value pairs for `object`
13776 * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
13784 * @param {Object} object The object to query.
13798 var toPairs = createToPairs(keys);
13802 * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
13810 * @param {Object} object The object to query.
13827 * An alternative to `_.reduce`; this method transforms `object` to a new
13828 * `accumulator` object which is the result of running each of its own
13830 * potentially mutating the `accumulator` object. If `accumulator` is not
13831 * provided, a new object with the same `[[Prototype]]` will be used. The
13832 * iteratee is invoked with four arguments: (accumulator, value, key, object).
13839 * @param {Object} object The object to iterate over.
13856 function transform(object, iteratee, accumulator) {
13857 var isArr = isArray(object),
13858 isArrLike = isArr || isBuffer(object) || isTypedArray(object);
13862 var Ctor = object && object.constructor;
13866 else if (isObject(object)) {
13867 accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
13873 (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
13874 return iteratee(accumulator, value, index, object);
13880 * Removes the property at `path` of `object`.
13882 * **Note:** This method mutates `object`.
13888 * @param {Object} object The object to modify.
13893 * var object = { 'a': [{ 'b': { 'c': 7 } }] };
13894 * _.unset(object, 'a[0].b.c');
13897 * console.log(object);
13900 * _.unset(object, ['a', '0', 'b', 'c']);
13903 * console.log(object);
13906 function unset(object, path) {
13907 return object == null ? true : baseUnset(object, path);
13915 * **Note:** This method mutates `object`.
13921 * @param {Object} object The object to modify.
13924 * @returns {Object} Returns `object`.
13927 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
13929 * _.update(object, 'a[0].b.c', function(n) { return n * n; });
13930 * console.log(object.a[0].b.c);
13933 * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
13934 * console.log(object.x[0].y.z);
13937 function update(object, path, updater) {
13938 return object == null ? object : baseUpdate(object, path, castFunction(updater));
13947 * **Note:** This method mutates `object`.
13953 * @param {Object} object The object to modify.
13957 * @returns {Object} Returns `object`.
13960 * var object = {};
13962 * _.updateWith(object, '[0][1]', _.constant('a'), Object);
13965 function updateWith(object, path, updater, customizer) {
13967 return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
13971 * Creates an array of the own enumerable string keyed property values of `object`.
13973 * **Note:** Non-object values are coerced to objects.
13979 * @param {Object} object The object to query.
13996 function values(object) {
13997 return object == null ? [] : baseValues(object, keys(object));
14002 * values of `object`.
14004 * **Note:** Non-object values are coerced to objects.
14010 * @param {Object} object The object to query.
14024 function valuesIn(object) {
14025 return object == null ? [] : baseValues(object, keysIn(object));
14739 * object is given, it takes precedence over `_.templateSettings` values.
14756 * @param {Object} [options={}] The options object.
14762 * An object to import into the template as free variables.
14768 * The data object variable name.
14851 importsKeys = keys(imports),
14906 // code to add the data object to the top of the scope chain.
15119 * @param {Object} [options={}] The options object.
15304 * object. Any additional arguments are provided to `func` when it's invoked.
15312 * @returns {*} Returns the `func` result or error object.
15333 * Binds methods of an object to the object itself, overwriting the existing
15342 * @param {Object} object The object to bind and assign the bound methods to.
15343 * @param {...(string|string[])} methodNames The object method names to bind.
15344 * @returns {Object} Returns `object`.
15358 var bindAll = flatRest(function(object, methodNames) {
15361 baseAssignValue(object, key, bind(object[key], object));
15363 return object;
15419 * the corresponding property values of a given object, returning `true` if
15429 * @param {Object} source The object of property predicates to conform to.
15552 * var object = { 'a': 1 };
15554 * console.log(_.identity(object) === object);
15564 * property value for a given element. If `func` is an array or object, the
15609 * object and `source`, returning `true` if the given object has equivalent
15615 * Partial comparisons will match empty array and empty object `source`
15616 * values against any array or object value, respectively. See `_.isEqual`
15626 * @param {Object} source The object of property values to match.
15648 * value at `path` of a given object to `srcValue`, returning `true` if the
15649 * object value is equivalent, else `false`.
15651 * **Note:** Partial comparisons will match empty array and empty object
15652 * `srcValue` values against any array or object value, respectively. See
15684 * Creates a function that invokes the method at `path` of a given object.
15708 return function(object) {
15709 return baseInvoke(object, path, args);
15715 * the method at a given path of `object`. Any additional arguments are
15722 * @param {Object} object The object to query.
15728 * object = { 'a': array, 'b': array, 'c': array };
15730 * _.map(['a[2]', 'c[0]'], _.methodOf(object));
15733 * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
15736 var methodOf = baseRest(function(object, args) {
15738 return baseInvoke(object, path, args);
15744 * object to the destination object. If `object` is a function, then methods
15754 * @param {Function|Object} [object=lodash] The destination object.
15755 * @param {Object} source The object of functions to add.
15756 * @param {Object} [options={}] The options object.
15758 * @returns {Function|Object} Returns `object`.
15778 function mixin(object, source, options) {
15779 var props = keys(source),
15785 source = object;
15786 object = this;
15787 methodNames = baseFunctions(source, keys(source));
15790 isFunc = isFunction(object);
15794 object[methodName] = func;
15796 object.prototype[methodName] = function() {
15799 var result = object(this.__wrapped__),
15802 actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
15806 return func.apply(object, arrayPush([this.value()], arguments));
15811 return object;
15961 * Creates a function that returns the value at `path` of a given object.
15988 * the value at a given path of `object`.
15994 * @param {Object} object The object to query.
15999 * object = { 'a': array, 'b': array, 'c': array };
16001 * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
16004 * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
16007 function propertyOf(object) {
16009 return object == null ? undefined : baseGet(object, path);
16134 * This method returns a new empty object.
16140 * @returns {Object} Returns the new empty object.
16681 lodash.keys = keys;
17185 if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
17186 // Expose Lodash on the global object to prevent errors when Lodash is
17189 // Use `_.noConflict` to remove Lodash from the global object.
17206 // Export to the global object.