实现数组的 flat 方法

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


1
2
3
4
5
6
7
8
9
10
11
12
13
function _flat(arr, depth) {
 if(!Array.isArray(arr) || depth <= 0) {
   return arr;
}
 return arr.reduce((prev, cur) => {
   if (Array.isArray(cur)) {
     return prev.concat(_flat(cur, depth - 1))
  } else {
     return prev.concat(cur);
  }
}, []);
}