From 314048b06992e85e1ea0f4c4d2b9f9923d375be4 Mon Sep 17 00:00:00 2001 From: jdalton Date: Sun, 24 May 2015 01:44:03 -0700 Subject: [PATCH] Bump to v3.9.2. --- README.md | 8 +- array/difference.js | 4 +- array/intersection.js | 4 +- array/union.js | 4 +- array/xor.js | 2 +- collection/sample.js | 18 +++- collection/shuffle.js | 21 ++--- index.js | 143 ++++++++++++++++++++++---------- internal/arrayExtremum.js | 2 +- internal/baseIsEqual.js | 5 +- internal/baseMatchesProperty.js | 3 +- internal/isLaziable.js | 11 ++- math/max.js | 5 +- math/min.js | 5 +- object/set.js | 4 +- package.json | 2 +- utility/matches.js | 2 +- utility/matchesProperty.js | 2 +- utility/method.js | 4 +- utility/methodOf.js | 6 +- utility/noop.js | 2 +- utility/property.js | 2 +- utility/propertyOf.js | 2 +- 23 files changed, 169 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index 306affbe4..3ea199996 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash v3.9.1 +# lodash v3.9.2 The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules. @@ -28,7 +28,7 @@ var array = require('lodash/array'); var chunk = require('lodash/array/chunk'); ``` -See the [package source](https://github.com/lodash/lodash/tree/3.9.1-npm) for more details. +See the [package source](https://github.com/lodash/lodash/tree/3.9.2-npm) for more details. **Note:**
Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.
@@ -39,8 +39,8 @@ Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash b lodash is also available in a variety of other builds & module formats. * npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds - * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.9.1-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.9.1-amd) builds - * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.9.1-es) build + * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.9.2-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.9.2-amd) builds + * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.9.2-es) build ## Further Reading diff --git a/array/difference.js b/array/difference.js index 22a5cf899..5049337e5 100644 --- a/array/difference.js +++ b/array/difference.js @@ -4,8 +4,8 @@ var baseDifference = require('../internal/baseDifference'), restParam = require('../function/restParam'); /** - * Creates an array excluding all values of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique `array` values not included in the other + * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/intersection.js b/array/intersection.js index aca423f77..ec5b7f9b6 100644 --- a/array/intersection.js +++ b/array/intersection.js @@ -5,8 +5,8 @@ var baseIndexOf = require('../internal/baseIndexOf'), restParam = require('../function/restParam'); /** - * Creates an array of unique values in all provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values that are included in all of the provided + * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/union.js b/array/union.js index ee71b2782..05101ca1c 100644 --- a/array/union.js +++ b/array/union.js @@ -3,8 +3,8 @@ var baseFlatten = require('../internal/baseFlatten'), restParam = require('../function/restParam'); /** - * Creates an array of unique values, in order, of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values, in order, from all of the provided arrays + * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static diff --git a/array/xor.js b/array/xor.js index 315b9f8e2..3bdf9df12 100644 --- a/array/xor.js +++ b/array/xor.js @@ -3,7 +3,7 @@ var baseDifference = require('../internal/baseDifference'), isArrayLike = require('../internal/isArrayLike'); /** - * Creates an array that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) * of the provided arrays. * * @static diff --git a/collection/sample.js b/collection/sample.js index f090db107..8e0153301 100644 --- a/collection/sample.js +++ b/collection/sample.js @@ -1,6 +1,6 @@ var baseRandom = require('../internal/baseRandom'), isIterateeCall = require('../internal/isIterateeCall'), - shuffle = require('./shuffle'), + toArray = require('../lang/toArray'), toIterable = require('../internal/toIterable'); /* Native method references for those with the same name as other `lodash` methods. */ @@ -30,8 +30,20 @@ function sample(collection, n, guard) { var length = collection.length; return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; } - var result = shuffle(collection); - result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + var index = -1, + result = toArray(collection), + length = result.length, + lastIndex = length - 1; + + n = nativeMin(n < 0 ? 0 : (+n || 0), length); + while (++index < n) { + var rand = baseRandom(index, lastIndex), + value = result[rand]; + + result[rand] = result[index]; + result[index] = value; + } + result.length = n; return result; } diff --git a/collection/shuffle.js b/collection/shuffle.js index 2281d4f65..949689c5f 100644 --- a/collection/shuffle.js +++ b/collection/shuffle.js @@ -1,5 +1,7 @@ -var baseRandom = require('../internal/baseRandom'), - toIterable = require('../internal/toIterable'); +var sample = require('./sample'); + +/** Used as references for `-Infinity` and `Infinity`. */ +var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** * Creates an array of shuffled values, using a version of the @@ -16,20 +18,7 @@ var baseRandom = require('../internal/baseRandom'), * // => [4, 1, 3, 2] */ function shuffle(collection) { - collection = toIterable(collection); - - var index = -1, - length = collection.length, - result = Array(length); - - while (++index < length) { - var rand = baseRandom(0, index); - if (index != rand) { - result[index] = result[rand]; - } - result[rand] = collection[index]; - } - return result; + return sample(collection, POSITIVE_INFINITY); } module.exports = shuffle; diff --git a/index.js b/index.js index 4c3531643..d5ac9657a 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ /** * @license - * lodash 3.9.1 (Custom Build) + * lodash 3.9.2 (Custom Build) * Build: `lodash modern -d -o ./index.js` * Copyright 2012-2015 The Dojo Foundation * Based on Underscore.js 1.8.3 @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '3.9.1'; + var VERSION = '3.9.2'; /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, @@ -280,6 +280,8 @@ */ var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this; + /*--------------------------------------------------------------------------*/ + /** * The base implementation of `compareAscending` which compares values and * sorts them in ascending order without guaranteeing a stable sort. @@ -648,6 +650,8 @@ return htmlUnescapes[chr]; } + /*--------------------------------------------------------------------------*/ + /** * Create a new pristine `lodash` function using the given `context` object. * @@ -773,7 +777,8 @@ nativeRandom = Math.random; /** Used as references for `-Infinity` and `Infinity`. */ - var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, + POSITIVE_INFINITY = Number.POSITIVE_INFINITY; /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295, @@ -795,6 +800,8 @@ /** Used to lookup unminified function names. */ var realNames = {}; + /*------------------------------------------------------------------------*/ + /** * Creates a `lodash` object which wraps `value` to enable implicit chaining. * Methods that operate on and return arrays, collections, and functions can @@ -1015,6 +1022,8 @@ } }; + /*------------------------------------------------------------------------*/ + /** * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. * @@ -1143,6 +1152,8 @@ return result; } + /*------------------------------------------------------------------------*/ + /** * Creates a cache object to store key/value pairs. * @@ -1211,6 +1222,8 @@ return this; } + /*------------------------------------------------------------------------*/ + /** * * Creates a cache object to store unique values. @@ -1260,6 +1273,8 @@ } } + /*------------------------------------------------------------------------*/ + /** * Copies the values of `source` to `array`. * @@ -1343,7 +1358,7 @@ } /** - * A specialized version of `baseExtremum` for arrays whichs invokes `iteratee` + * A specialized version of `baseExtremum` for arrays which invokes `iteratee` * with one argument: (value). * * @private @@ -2115,7 +2130,7 @@ if (value === other) { return true; } - if (value == null || other == null || (!isObject(value) && !isObject(other))) { + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); @@ -2292,8 +2307,7 @@ } /** - * The base implementation of `_.matchesProperty` which does not which does - * not clone `value`. + * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. @@ -4115,7 +4129,15 @@ */ function isLaziable(func) { var funcName = getFuncName(func); - return !!funcName && func === lodash[funcName] && funcName in LazyWrapper.prototype; + if (!(funcName in LazyWrapper.prototype)) { + return false; + } + var other = lodash[funcName]; + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; } /** @@ -4431,6 +4453,8 @@ : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); } + /*------------------------------------------------------------------------*/ + /** * Creates an array of elements split into groups the length of `size`. * If `collection` can't be split evenly, the final chunk will be the remaining @@ -4498,8 +4522,8 @@ } /** - * Creates an array excluding all values of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique `array` values not included in the other + * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static @@ -4972,8 +4996,8 @@ } /** - * Creates an array of unique values in all provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values that are included in all of the provided + * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static @@ -5526,8 +5550,8 @@ } /** - * Creates an array of unique values, in order, of the provided arrays using - * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * Creates an array of unique values, in order, from all of the provided arrays + * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) * for equality comparisons. * * @static @@ -5708,7 +5732,7 @@ }); /** - * Creates an array that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * Creates an array of unique values that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) * of the provided arrays. * * @static @@ -5825,6 +5849,8 @@ return unzipWith(arrays, iteratee, thisArg); }); + /*------------------------------------------------------------------------*/ + /** * Creates a `lodash` object that wraps `value` with explicit method * chaining enabled. @@ -6075,6 +6101,8 @@ return baseWrapperValue(this.__wrapped__, this.__actions__); } + /*------------------------------------------------------------------------*/ + /** * Creates an array of elements corresponding to the given keys, or indexes, * of `collection`. Keys may be specified as individual arguments or as arrays @@ -6882,8 +6910,20 @@ var length = collection.length; return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; } - var result = shuffle(collection); - result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + var index = -1, + result = toArray(collection), + length = result.length, + lastIndex = length - 1; + + n = nativeMin(n < 0 ? 0 : (+n || 0), length); + while (++index < n) { + var rand = baseRandom(index, lastIndex), + value = result[rand]; + + result[rand] = result[index]; + result[index] = value; + } + result.length = n; return result; } @@ -6902,20 +6942,7 @@ * // => [4, 1, 3, 2] */ function shuffle(collection) { - collection = toIterable(collection); - - var index = -1, - length = collection.length, - result = Array(length); - - while (++index < length) { - var rand = baseRandom(0, index); - if (index != rand) { - result[index] = result[rand]; - } - result[rand] = collection[index]; - } - return result; + return sample(collection, POSITIVE_INFINITY); } /** @@ -7196,6 +7223,8 @@ return filter(collection, baseMatches(source)); } + /*------------------------------------------------------------------------*/ + /** * Gets the number of milliseconds that have elapsed since the Unix epoch * (1 January 1970 00:00:00 UTC). @@ -7214,6 +7243,8 @@ return new Date().getTime(); }; + /*------------------------------------------------------------------------*/ + /** * The opposite of `_.before`; this method creates a function that invokes * `func` once it is called `n` or more times. @@ -8194,6 +8225,8 @@ return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); } + /*------------------------------------------------------------------------*/ + /** * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, * otherwise they are assigned by reference. If `customizer` is provided it is @@ -9025,6 +9058,8 @@ return baseCopy(value, keysIn(value)); } + /*------------------------------------------------------------------------*/ + /** * Assigns own enumerable properties of source object(s) to the destination * object. Subsequent sources overwrite property assignments of previous sources. @@ -9858,13 +9893,13 @@ var index = -1, length = path.length, - endIndex = length - 1, + lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = path[index]; if (isObject(nested)) { - if (index == endIndex) { + if (index == lastIndex) { nested[key] = value; } else if (nested[key] == null) { nested[key] = isIndex(path[index + 1]) ? [] : {}; @@ -9982,6 +10017,8 @@ return baseValues(object, keysIn(object)); } + /*------------------------------------------------------------------------*/ + /** * Checks if `n` is between `start` and up to but not including, `end`. If * `end` is not specified it is set to `start` with `start` then set to `0`. @@ -10086,6 +10123,8 @@ return baseRandom(min, max); } + /*------------------------------------------------------------------------*/ + /** * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). * @@ -10951,6 +10990,8 @@ return string.match(pattern || reWords) || []; } + /*------------------------------------------------------------------------*/ + /** * Attempts to invoke `func`, returning either the result or the caught error * object. Any additional arguments are provided to `func` when it is invoked. @@ -11068,7 +11109,7 @@ } /** - * Creates a function which performs a deep comparison between a given object + * Creates a function that performs a deep comparison between a given object * and `source`, returning `true` if the given object has equivalent property * values, else `false`. * @@ -11097,7 +11138,7 @@ } /** - * Creates a function which compares the property value of `path` on a given + * Creates a function that compares the property value of `path` on a given * object to `value`. * * **Note:** This method supports comparing arrays, booleans, `Date` objects, @@ -11125,12 +11166,14 @@ } /** - * Creates a function which invokes the method at `path` on a given object. + * Creates a function that invokes the method at `path` on a given object. + * Any additional arguments are provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * @@ -11152,13 +11195,15 @@ }); /** - * The opposite of `_.method`; this method creates a function which invokes - * the method at a given path on `object`. + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path on `object`. Any additional arguments are + * provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * @@ -11284,7 +11329,7 @@ } /** - * A no-operation function which returns `undefined` regardless of the + * A no-operation function that returns `undefined` regardless of the * arguments it receives. * * @static @@ -11302,7 +11347,7 @@ } /** - * Creates a function which returns the property value at `path` on a + * Creates a function that returns the property value at `path` on a * given object. * * @static @@ -11328,7 +11373,7 @@ } /** - * The opposite of `_.property`; this method creates a function which returns + * The opposite of `_.property`; this method creates a function that returns * the property value at a given path on `object`. * * @static @@ -11482,6 +11527,8 @@ return baseToString(prefix) + id; } + /*------------------------------------------------------------------------*/ + /** * Adds two numbers. * @@ -11547,7 +11594,7 @@ * _.max(users, 'age'); * // => { 'user': 'fred', 'age': 40 } */ - var max = createExtremum(gt, -Infinity); + var max = createExtremum(gt, NEGATIVE_INFINITY); /** * Gets the minimum value of `collection`. If `collection` is empty or falsey @@ -11596,7 +11643,7 @@ * _.min(users, 'age'); * // => { 'user': 'barney', 'age': 36 } */ - var min = createExtremum(lt, Infinity); + var min = createExtremum(lt, POSITIVE_INFINITY); /** * Gets the sum of the values in `collection`. @@ -11646,6 +11693,8 @@ : baseSum(collection, iteratee); } + /*------------------------------------------------------------------------*/ + // Ensure wrappers are instances of `baseLodash`. lodash.prototype = baseLodash.prototype; @@ -11793,6 +11842,8 @@ // Add functions to `lodash.prototype`. mixin(lodash, lodash); + /*------------------------------------------------------------------------*/ + // Add functions that return unwrapped values when chaining. lodash.add = add; lodash.attempt = attempt; @@ -11901,6 +11952,8 @@ return source; }()), false); + /*------------------------------------------------------------------------*/ + // Add functions capable of returning wrapped and unwrapped values when chaining. lodash.sample = sample; @@ -11913,6 +11966,8 @@ }); }; + /*------------------------------------------------------------------------*/ + /** * The semantic version number. * @@ -12140,6 +12195,8 @@ return lodash; } + /*--------------------------------------------------------------------------*/ + // Export lodash. var _ = runInContext(); diff --git a/internal/arrayExtremum.js b/internal/arrayExtremum.js index c56969e7a..e45badbda 100644 --- a/internal/arrayExtremum.js +++ b/internal/arrayExtremum.js @@ -1,5 +1,5 @@ /** - * A specialized version of `baseExtremum` for arrays whichs invokes `iteratee` + * A specialized version of `baseExtremum` for arrays which invokes `iteratee` * with one argument: (value). * * @private diff --git a/internal/baseIsEqual.js b/internal/baseIsEqual.js index 932dec7b7..87e14ac55 100644 --- a/internal/baseIsEqual.js +++ b/internal/baseIsEqual.js @@ -1,5 +1,6 @@ var baseIsEqualDeep = require('./baseIsEqualDeep'), - isObject = require('../lang/isObject'); + isObject = require('../lang/isObject'), + isObjectLike = require('./isObjectLike'); /** * The base implementation of `_.isEqual` without support for `this` binding @@ -18,7 +19,7 @@ function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) { if (value === other) { return true; } - if (value == null || other == null || (!isObject(value) && !isObject(other))) { + if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB); diff --git a/internal/baseMatchesProperty.js b/internal/baseMatchesProperty.js index 12229714d..8f9005ce0 100644 --- a/internal/baseMatchesProperty.js +++ b/internal/baseMatchesProperty.js @@ -9,8 +9,7 @@ var baseGet = require('./baseGet'), toPath = require('./toPath'); /** - * The base implementation of `_.matchesProperty` which does not which does - * not clone `value`. + * The base implementation of `_.matchesProperty` which does not clone `srcValue`. * * @private * @param {string} path The path of the property to get. diff --git a/internal/isLaziable.js b/internal/isLaziable.js index 7b4829924..a0f14702b 100644 --- a/internal/isLaziable.js +++ b/internal/isLaziable.js @@ -1,4 +1,5 @@ var LazyWrapper = require('./LazyWrapper'), + getData = require('./getData'), getFuncName = require('./getFuncName'), lodash = require('../chain/lodash'); @@ -11,7 +12,15 @@ var LazyWrapper = require('./LazyWrapper'), */ function isLaziable(func) { var funcName = getFuncName(func); - return !!funcName && func === lodash[funcName] && funcName in LazyWrapper.prototype; + if (!(funcName in LazyWrapper.prototype)) { + return false; + } + var other = lodash[funcName]; + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; } module.exports = isLaziable; diff --git a/math/max.js b/math/max.js index f95cdbc4c..194c80069 100644 --- a/math/max.js +++ b/math/max.js @@ -1,6 +1,9 @@ var createExtremum = require('../internal/createExtremum'), gt = require('../lang/gt'); +/** Used as references for `-Infinity` and `Infinity`. */ +var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; + /** * Gets the maximum value of `collection`. If `collection` is empty or falsey * `-Infinity` is returned. If an iteratee function is provided it is invoked @@ -48,6 +51,6 @@ var createExtremum = require('../internal/createExtremum'), * _.max(users, 'age'); * // => { 'user': 'fred', 'age': 40 } */ -var max = createExtremum(gt, -Infinity); +var max = createExtremum(gt, NEGATIVE_INFINITY); module.exports = max; diff --git a/math/min.js b/math/min.js index 1f78e8361..8a98a85aa 100644 --- a/math/min.js +++ b/math/min.js @@ -1,6 +1,9 @@ var createExtremum = require('../internal/createExtremum'), lt = require('../lang/lt'); +/** Used as references for `-Infinity` and `Infinity`. */ +var POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + /** * Gets the minimum value of `collection`. If `collection` is empty or falsey * `Infinity` is returned. If an iteratee function is provided it is invoked @@ -48,6 +51,6 @@ var createExtremum = require('../internal/createExtremum'), * _.min(users, 'age'); * // => { 'user': 'barney', 'age': 36 } */ -var min = createExtremum(lt, Infinity); +var min = createExtremum(lt, POSITIVE_INFINITY); module.exports = min; diff --git a/object/set.js b/object/set.js index 02caf318d..423faab82 100644 --- a/object/set.js +++ b/object/set.js @@ -35,13 +35,13 @@ function set(object, path, value) { var index = -1, length = path.length, - endIndex = length - 1, + lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = path[index]; if (isObject(nested)) { - if (index == endIndex) { + if (index == lastIndex) { nested[key] = value; } else if (nested[key] == null) { nested[key] = isIndex(path[index + 1]) ? [] : {}; diff --git a/package.json b/package.json index fcc543e4d..10be7e300 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "3.9.1", + "version": "3.9.2", "description": "The modern build of lodash modular utilities.", "homepage": "https://lodash.com/", "icon": "https://lodash.com/icon.svg", diff --git a/utility/matches.js b/utility/matches.js index 6b14143db..a182637bd 100644 --- a/utility/matches.js +++ b/utility/matches.js @@ -2,7 +2,7 @@ var baseClone = require('../internal/baseClone'), baseMatches = require('../internal/baseMatches'); /** - * Creates a function which performs a deep comparison between a given object + * Creates a function that performs a deep comparison between a given object * and `source`, returning `true` if the given object has equivalent property * values, else `false`. * diff --git a/utility/matchesProperty.js b/utility/matchesProperty.js index ee268e5d6..91e51a56c 100644 --- a/utility/matchesProperty.js +++ b/utility/matchesProperty.js @@ -2,7 +2,7 @@ var baseClone = require('../internal/baseClone'), baseMatchesProperty = require('../internal/baseMatchesProperty'); /** - * Creates a function which compares the property value of `path` on a given + * Creates a function that compares the property value of `path` on a given * object to `value`. * * **Note:** This method supports comparing arrays, booleans, `Date` objects, diff --git a/utility/method.js b/utility/method.js index 6a7281af5..e315b7f35 100644 --- a/utility/method.js +++ b/utility/method.js @@ -2,12 +2,14 @@ var invokePath = require('../internal/invokePath'), restParam = require('../function/restParam'); /** - * Creates a function which invokes the method at `path` on a given object. + * Creates a function that invokes the method at `path` on a given object. + * Any additional arguments are provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * diff --git a/utility/methodOf.js b/utility/methodOf.js index 9286cc25f..f61b78227 100644 --- a/utility/methodOf.js +++ b/utility/methodOf.js @@ -2,13 +2,15 @@ var invokePath = require('../internal/invokePath'), restParam = require('../function/restParam'); /** - * The opposite of `_.method`; this method creates a function which invokes - * the method at a given path on `object`. + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path on `object`. Any additional arguments are + * provided to the invoked method. * * @static * @memberOf _ * @category Utility * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. * @returns {Function} Returns the new function. * @example * diff --git a/utility/noop.js b/utility/noop.js index 344adea0c..56d651344 100644 --- a/utility/noop.js +++ b/utility/noop.js @@ -1,5 +1,5 @@ /** - * A no-operation function which returns `undefined` regardless of the + * A no-operation function that returns `undefined` regardless of the * arguments it receives. * * @static diff --git a/utility/property.js b/utility/property.js index e149f6d10..ddfd59798 100644 --- a/utility/property.js +++ b/utility/property.js @@ -3,7 +3,7 @@ var baseProperty = require('../internal/baseProperty'), isKey = require('../internal/isKey'); /** - * Creates a function which returns the property value at `path` on a + * Creates a function that returns the property value at `path` on a * given object. * * @static diff --git a/utility/propertyOf.js b/utility/propertyOf.js index a3b9c2799..093c65978 100644 --- a/utility/propertyOf.js +++ b/utility/propertyOf.js @@ -2,7 +2,7 @@ var baseGet = require('../internal/baseGet'), toPath = require('../internal/toPath'); /** - * The opposite of `_.property`; this method creates a function which returns + * The opposite of `_.property`; this method creates a function that returns * the property value at a given path on `object`. * * @static