数据的扁平化

68 阅读1分钟

数据的扁平化

  • 就是将一个"多维数组"转化为一个"一维数组"
    const arr = [1, 2, 3, 4, [5, 6, 7, 8, [9, 10, 11, 12]]]
    console.log(arr)
    // 1. 面试版
    // 该函数接收一个参数,也就是你要实现扁平化的一个数组
    function flat(origin) {
      // 1. 创建一个空数组,用来接收扁平化以后的元素内容
      const newArr = []
      // 2.实现数组的扁平化
      function fn(fnOrigin) {
        fnOrigin.forEach((item) => {
          // console.log(item)
          if(Object.prototype.toString.call(item) === '[object Array]'){
            // 说明当前item是一个数组,所以此时需要递归调用fn函数
            fn(item)
          } else {
            // 如果当前分支执行,说明item一定不是一个数组
            newArr.push(item)
          }
        })
      }
      fn(origin)
      // 3.把处理好的数组(newArr)返回出去
      return newArr
    }
    const flatArr = flat(arr)
    console.log(flatArr)
    // 2.工作版(一行搞定) Infinity
    console.log(arr)
    console.log(arr.flat(1))
    console.log(arr.flat(2))
    console.log(arr.flat(Infinity))