# ❓使用迭代的方式实现 flatten 函数
let testArr = [1, [2, 3], [43, 5], [1, [3, [12, 123]]]]
// 迭代
const flatten = function(target) {
while (target.some(item => Array.isArray(item))) {
target = [].concat(...target)
}
return target
}
console.log(flatten(testArr))
// 递归ES6简写
const flatten2 = target =>
target.reduce(
(acc, cur) =>
Array.isArray(acc) ? [...acc, ...flatten2(cur)] : [...acc, cur],
[]
)
console.log(flatten2(testArr))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22