root / HServer / 00.Server / 00.Program / node_modules / array-flatten / array-flatten.js
이력 | 보기 | 이력해설 | 다운로드 (1.17 KB)
1 |
'use strict'
|
---|---|
2 |
|
3 |
/**
|
4 |
* Expose `arrayFlatten`.
|
5 |
*/
|
6 |
module.exports = arrayFlatten |
7 |
|
8 |
/**
|
9 |
* Recursive flatten function with depth.
|
10 |
*
|
11 |
* @param {Array} array
|
12 |
* @param {Array} result
|
13 |
* @param {Number} depth
|
14 |
* @return {Array}
|
15 |
*/
|
16 |
function flattenWithDepth (array, result, depth) { |
17 |
for (var i = 0; i < array.length; i++) { |
18 |
var value = array[i]
|
19 |
|
20 |
if (depth > 0 && Array.isArray(value)) { |
21 |
flattenWithDepth(value, result, depth - 1)
|
22 |
} else {
|
23 |
result.push(value) |
24 |
} |
25 |
} |
26 |
|
27 |
return result
|
28 |
} |
29 |
|
30 |
/**
|
31 |
* Recursive flatten function. Omitting depth is slightly faster.
|
32 |
*
|
33 |
* @param {Array} array
|
34 |
* @param {Array} result
|
35 |
* @return {Array}
|
36 |
*/
|
37 |
function flattenForever (array, result) { |
38 |
for (var i = 0; i < array.length; i++) { |
39 |
var value = array[i]
|
40 |
|
41 |
if (Array.isArray(value)) {
|
42 |
flattenForever(value, result) |
43 |
} else {
|
44 |
result.push(value) |
45 |
} |
46 |
} |
47 |
|
48 |
return result
|
49 |
} |
50 |
|
51 |
/**
|
52 |
* Flatten an array, with the ability to define a depth.
|
53 |
*
|
54 |
* @param {Array} array
|
55 |
* @param {Number} depth
|
56 |
* @return {Array}
|
57 |
*/
|
58 |
function arrayFlatten (array, depth) { |
59 |
if (depth == null) { |
60 |
return flattenForever(array, [])
|
61 |
} |
62 |
|
63 |
return flattenWithDepth(array, [], depth)
|
64 |
} |