| var arrayFilter = require('./_arrayFilter'), | |
|     arrayMap = require('./_arrayMap'), | |
|     baseProperty = require('./_baseProperty'), | |
|     baseTimes = require('./_baseTimes'), | |
|     isArrayLikeObject = require('./isArrayLikeObject'); | |
| 
 | |
| /* Built-in method references for those with the same name as other `lodash` methods. */ | |
| var nativeMax = Math.max; | |
| 
 | |
| /** | |
|  * This method is like `_.zip` except that it accepts an array of grouped | |
|  * elements and creates an array regrouping the elements to their pre-zip | |
|  * configuration. | |
|  * | |
|  * @static | |
|  * @memberOf _ | |
|  * @since 1.2.0 | |
|  * @category Array | |
|  * @param {Array} array The array of grouped elements to process. | |
|  * @returns {Array} Returns the new array of regrouped elements. | |
|  * @example | |
|  * | |
|  * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); | |
|  * // => [['a', 1, true], ['b', 2, false]] | |
|  * | |
|  * _.unzip(zipped); | |
|  * // => [['a', 'b'], [1, 2], [true, false]] | |
|  */ | |
| function unzip(array) { | |
|   if (!(array && array.length)) { | |
|     return []; | |
|   } | |
|   var length = 0; | |
|   array = arrayFilter(array, function(group) { | |
|     if (isArrayLikeObject(group)) { | |
|       length = nativeMax(group.length, length); | |
|       return true; | |
|     } | |
|   }); | |
|   return baseTimes(length, function(index) { | |
|     return arrayMap(array, baseProperty(index)); | |
|   }); | |
| } | |
| 
 | |
| module.exports = unzip;
 |