diff --git a/lodash.js b/lodash.js index 7f0860fac..70ef37416 100644 --- a/lodash.js +++ b/lodash.js @@ -4187,8 +4187,7 @@ * @memberOf _ * @category Array * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk. - * @param- {Object} [guard] Enables use as an iteratee for functions like `_.map`. + * @param {number} [size=0] The length of each chunk. * @returns {Array} Returns the new array containing chunks. * @example * @@ -4198,11 +4197,10 @@ * _.chunk(['a', 'b', 'c', 'd'], 3); * // => [['a', 'b', 'c'], ['d']] */ - function chunk(array, size, guard) { - if (guard ? isIterateeCall(array, size, guard) : size == null) { - size = 1; - } else { - size = nativeMax(nativeFloor(size) || 1, 1); + function chunk(array, size) { + size = nativeMax(nativeFloor(size) || 0, 0); + if (size < 1) { + return []; } var index = 0, length = array ? array.length : 0, @@ -6146,10 +6144,10 @@ * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. * * The guarded methods are: - * `ary`, `callback`, `chunk`, `create`, `curry`, `curryRight`, `drop`, - * `dropRight`, `every`, `fill`, `invert`, `parseInt`, `random`, `range`, - * `sample`, `slice`, `some`, `sortBy`, `sumBy`, `take`, `takeRight`, - * `template`, `trim`, `trimLeft`, `trimRight`, `trunc`, `uniqBy`, and `words` + * `ary`, `callback`, `create`, `curry`, `curryRight`, `drop`, `dropRight`, + * `every`, `fill`, `invert`, `parseInt`, `random`, `range`, `sample`, + * `slice`, `some`, `sortBy`, `sumBy`, `take`, `takeRight`, `template`, + * `trim`, `trimLeft`, `trimRight`, `trunc`, `uniqBy`, and `words` * * @static * @memberOf _ diff --git a/test/test.js b/test/test.js index 34f2d6f38..636a24865 100644 --- a/test/test.js +++ b/test/test.js @@ -1794,9 +1794,9 @@ deepEqual(actual, [[0, 1, 2, 3], [4, 5]]); }); - test('should ensure the minimum `chunkSize` is `1`', 1, function() { + test('should ensure the minimum `size` is `0`', 1, function() { var values = falsey.concat(-1, -Infinity), - expected = _.map(values, _.constant([[0], [1], [2], [3], [4], [5]])); + expected = _.map(values, _.constant([])); var actual = _.map(values, function(value, index) { return index ? _.chunk(array, value) : _.chunk(array); @@ -1808,11 +1808,6 @@ test('should floor `size` values', 1, function() { deepEqual(_.chunk(array, array.length / 4), [[0], [1], [2], [3], [4], [5]]); }); - - test('should work as an iteratee for methods like `_.map`', 1, function() { - var actual = _.map([[1, 2], [3, 4]], _.chunk); - deepEqual(actual, [[[1], [2]], [[3], [4]]]); - }); }()); /*--------------------------------------------------------------------------*/