将多重嵌套数组恢复为一个数组

问题:给定一个任意多重嵌套数组,把它恢复为一个完整的数组,没有嵌套。

样例:

Input

steamrollArray([[["a"]], [["b"]]])

steamrollArray([1, [2], [3, [[4]]]])

Output

["a", "b"]

[1, 2, 3, 4]

 

实现:利用dfs搜索,一步步找是否是数组(Array.isArray(arr)判断是否是数组)

代码如下:

 1 function steamrollArray(arr) {
 2   var newArr = [];
 3   function dfsArray(arr) {
 4     for(var i = 0; i < arr.length; i++) {
 5       if(!Array.isArray(arr[i])) {
 6         newArr.push(arr[i]);
 7       } else {
 8         dfsArray(arr[i]);
 9       }
10     }
11   }
12   dfsArray(arr);
13   return newArr;
14 }

 

posted @ 2016-12-10 17:00  FunPR  阅读(287)  评论(0编辑  收藏  举报