42e87f4351b8d5775f39a80f8e4cffedd95c72c3
[platform/framework/web/crosswalk-tizen.git] /
1 define(['../lang/isArray', './append'], function (isArray, append) {
2
3     /*
4      * Helper function to flatten to a destination array.
5      * Used to remove the need to create intermediate arrays while flattening.
6      */
7     function flattenTo(arr, result, level) {
8         if (arr == null) {
9             return result;
10         } else if (level === 0) {
11             append(result, arr);
12             return result;
13         }
14
15         var value,
16             i = -1,
17             len = arr.length;
18         while (++i < len) {
19             value = arr[i];
20             if (isArray(value)) {
21                 flattenTo(value, result, level - 1);
22             } else {
23                 result.push(value);
24             }
25         }
26         return result;
27     }
28
29     /**
30      * Recursively flattens an array.
31      * A new array containing all the elements is returned.
32      * If `shallow` is true, it will only flatten one level.
33      */
34     function flatten(arr, level) {
35         level = level == null? -1 : level;
36         return flattenTo(arr, [], level);
37     }
38
39     return flatten;
40
41 });
42