# 题目描述
请你手写一个 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