首页 > 代码库 > FCC 中级算法题 数组扁平化

FCC 中级算法题 数组扁平化

Steamroller


对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。

Array.isArray()

思路:

(1)遍历arr,如果arr[i]是数组,就重新调用本函数继续循环,然后和新数组连接;

(2)如果不是数组,就直接添加进新数组;

知识点:

(1)Array.concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组;

(2)Array.push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度;

(3)Array.isArray()用于确定传递的值是否是一个 Array

代码:

 1 function steamroller(arr) {
 2   var newArr=[];
 3   for(var i=0;i<arr.length;i++){
 4     if(Array.isArray(arr[i])){
 5       //如果是数组,就重新调用本函数继续循环,然后和新数组连接
 6      newArr=newArr.concat(steamroller(arr[i]));
 7     }else{
 8      //如果不是数组,就直接添加进新数组
 9      newArr.push(arr[i]);
10     }
11   }
12   return newArr;
13 }
14 steamroller([1, [2,222,[22,[2,[2]]]], [3, [[4]]]]);

 

FCC 中级算法题 数组扁平化