9行代码实现多维数组的平铺(js版)

782 阅读1分钟
function fn(arr, num) {
  num === undefined && (num = find(arr))
  if (num > 0) return arr.reduce((x, y) => x.concat(Array.isArray(y) ? fn(y, num - 1) : y), [])
  if (num === 0) return arr
}
function find(arr, num = 1) {
  Array.isArray(arr) && arr.length && arr.forEach(item => find(item, num++))
  return num
}
const arr2 = [
  [1, 2],
  [3, 4],
  [5, 6],
  [7, [8, 9]]
]
console.log(arr2) // [1,2,3,4,5,6,7,8,9]