1 | var isArray = require('../lang/isArray');
|
2 | var append = require('./append');
|
3 |
|
4 | |
5 |
|
6 |
|
7 |
|
8 | function flattenTo(arr, result, level) {
|
9 | if (level === 0) {
|
10 | append(result, arr);
|
11 | return result;
|
12 | }
|
13 |
|
14 | var value,
|
15 | i = -1,
|
16 | len = arr.length;
|
17 | while (++i < len) {
|
18 | value = arr[i];
|
19 | if (isArray(value)) {
|
20 | flattenTo(value, result, level - 1);
|
21 | } else {
|
22 | result.push(value);
|
23 | }
|
24 | }
|
25 | return result;
|
26 | }
|
27 |
|
28 | |
29 |
|
30 |
|
31 |
|
32 |
|
33 | function flatten(arr, level) {
|
34 | if (arr == null) {
|
35 | return [];
|
36 | }
|
37 |
|
38 | level = level == null ? -1 : level;
|
39 | return flattenTo(arr, [], level);
|
40 | }
|
41 |
|
42 | module.exports = flatten;
|
43 |
|
44 |
|
45 |
|