# ❓使用迭代的方式实现 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