root / HServer / 00.Server / 00.Program / node_modules / lodash / unzip.js
이력 | 보기 | 이력해설 | 다운로드 (1.25 KB)
1 |
var arrayFilter = require('./_arrayFilter'), |
---|---|
2 |
arrayMap = require('./_arrayMap'),
|
3 |
baseProperty = require('./_baseProperty'),
|
4 |
baseTimes = require('./_baseTimes'),
|
5 |
isArrayLikeObject = require('./isArrayLikeObject');
|
6 |
|
7 |
/* Built-in method references for those with the same name as other `lodash` methods. */
|
8 |
var nativeMax = Math.max;
|
9 |
|
10 |
/**
|
11 |
* This method is like `_.zip` except that it accepts an array of grouped
|
12 |
* elements and creates an array regrouping the elements to their pre-zip
|
13 |
* configuration.
|
14 |
*
|
15 |
* @static
|
16 |
* @memberOf _
|
17 |
* @since 1.2.0
|
18 |
* @category Array
|
19 |
* @param {Array} array The array of grouped elements to process.
|
20 |
* @returns {Array} Returns the new array of regrouped elements.
|
21 |
* @example
|
22 |
*
|
23 |
* var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
|
24 |
* // => [['a', 1, true], ['b', 2, false]]
|
25 |
*
|
26 |
* _.unzip(zipped);
|
27 |
* // => [['a', 'b'], [1, 2], [true, false]]
|
28 |
*/
|
29 |
function unzip(array) { |
30 |
if (!(array && array.length)) {
|
31 |
return [];
|
32 |
} |
33 |
var length = 0; |
34 |
array = arrayFilter(array, function(group) {
|
35 |
if (isArrayLikeObject(group)) {
|
36 |
length = nativeMax(group.length, length); |
37 |
return true; |
38 |
} |
39 |
}); |
40 |
return baseTimes(length, function(index) { |
41 |
return arrayMap(array, baseProperty(index));
|
42 |
}); |
43 |
} |
44 |
|
45 |
module.exports = unzip; |