数组扁平化就是将多维数组化为一维数组

递归的方式

  function flatArr(arr) {
    return arr.reduce((result, item) => {
      return result.concat(Array.isArray(item) ? flatArr(item) : item)
    }, [])
  }

测试:

  let arr = [1,2,3,[4,5],[6,[7,[8]]]]

  console.log(flatArr(arr));

数组扁平化_一维数组

递归实现

  function flatArr(arr) {
    const result = []

    const stack = [...arr]

    while(stack.length != 0) {
      //重点,从最后一个开始取
      const val = stack.pop()

      if(Array.isArray(val)) {
        //遇到数组直接插入到stack的最后面
        stack.push(...val)
      } else {
        //重点,插入到结果数组中需要从头插入
        result.unshift(val)
      }
    }
    return result
  }

  let arr = [1,2,3,[4,5],[6,[7,[8]]]]

  console.log(flatArr(arr));

数组扁平化_数组_02