|  | var apply = require('./_apply'), | 
|  | arrayMap = require('./_arrayMap'), | 
|  | unzip = require('./unzip'); | 
|  |  | 
|  | /** | 
|  | * This method is like `_.unzip` except that it accepts `iteratee` to specify | 
|  | * how regrouped values should be combined. The iteratee is invoked with the | 
|  | * elements of each group: (...group). | 
|  | * | 
|  | * @static | 
|  | * @memberOf _ | 
|  | * @since 3.8.0 | 
|  | * @category Array | 
|  | * @param {Array} array The array of grouped elements to process. | 
|  | * @param {Function} [iteratee=_.identity] The function to combine | 
|  | *  regrouped values. | 
|  | * @returns {Array} Returns the new array of regrouped elements. | 
|  | * @example | 
|  | * | 
|  | * var zipped = _.zip([1, 2], [10, 20], [100, 200]); | 
|  | * // => [[1, 10, 100], [2, 20, 200]] | 
|  | * | 
|  | * _.unzipWith(zipped, _.add); | 
|  | * // => [3, 30, 300] | 
|  | */ | 
|  | function unzipWith(array, iteratee) { | 
|  | if (!(array && array.length)) { | 
|  | return []; | 
|  | } | 
|  | var result = unzip(array); | 
|  | if (iteratee == null) { | 
|  | return result; | 
|  | } | 
|  | return arrayMap(result, function(group) { | 
|  | return apply(iteratee, undefined, group); | 
|  | }); | 
|  | } | 
|  |  | 
|  | module.exports = unzipWith; |