实现数组扁平化

通过循环递归的方式,一项一项地去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组的每一项的连接:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let arr = [1, [2, [3, 4, 5]]];
function flatten(arr) {
 let result = [];

 for(let i = 0; i < arr.length; i++) {
   if(Array.isArray(arr[i])) {
     result = result.concat(flatten(arr[i]));
  } else {
     result.push(arr[i]);
  }
}
 return result;
}
flatten(arr);  // [1, 2, 3, 4,5]


或者

1
let newArray = arr.flat(depth)

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。 其中,depth 指定要提取嵌套数组的结构深度,默认值为 1。
但使用 Infinity 作为深度,展开任意深度的嵌套数组