mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-31 15:27:50 +00:00
38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
import arrayMap from '../internal/arrayMap';
|
|
import arrayMax from '../internal/arrayMax';
|
|
import baseProperty from '../internal/baseProperty';
|
|
|
|
/** Used to the length of n-tuples for `_.unzip`. */
|
|
var getLength = baseProperty('length');
|
|
|
|
/**
|
|
* 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 _
|
|
* @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(['fred', 'barney'], [30, 40], [true, false]);
|
|
* // => [['fred', 30, true], ['barney', 40, false]]
|
|
*
|
|
* _.unzip(zipped);
|
|
* // => [['fred', 'barney'], [30, 40], [true, false]]
|
|
*/
|
|
function unzip(array) {
|
|
var index = -1,
|
|
length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0,
|
|
result = Array(length);
|
|
|
|
while (++index < length) {
|
|
result[index] = arrayMap(array, baseProperty(index));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
export default unzip;
|