# 题目描述
请你手写一个 flatten 函数(数组降维)
# 代码实现
- 使用
toString展开,再将字符串转为数组 
// 使用toString
var arr1 = [1, 9, [2, 3], [], [0, 999, [66, [100, 200]]]];
let res = arr1.toString().split(",");
res = res.filter((item) => item != "").map(Number);
console.log("结果为: ", res);
/* 
结果为:  [
    1,  9,   2,   3, 0,
  999, 66, 100, 200
]
*/
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 使用
reduce 
// 使用reduce
function myFlatDeep(arr, deep = 1) {
  return arr.reduce((pre, cur) => {
    return pre.concat(Array.isArray(cur) ? myFlatDeep(cur, deep - 1) : cur);
  }, []);
}
// test
var arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]];
const res = myFlatDeep(arr1, Infinity);
console.log("结果为: ", res);
/* 
  结果为:  [
    1, 2, 3, 1, 2,
    3, 4, 2, 3, 4
  ]
*/
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18