数组扁平化

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

递归的方式

  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));

flat函数实现

const arr = [1, [2,3], [4, [5,[6]]]]
console.log(arr.flat(Infinity)) // [1, 2, 3, 4, 5, 6]

flat详解

posted @ 2021-10-13 13:51  卿六  阅读(40)  评论(0编辑  收藏  举报