JavaScript中的数组扁平化的四个方法(秋招面试手撕递归方式,必记!)

63 阅读1分钟
    const arr = [1,[2,[3,4,[5]]],6]



    //1.使用js自带api完成数组扁平化
    console.log(arr.flat(3))//里面的参数指的是内套循环的层数



    //2.数组正则表达式(这个可以重点理解一下)
    const arr2 = JSON.stringify(arr).replace(/\[|\]/g,''
    console.log(arr2,typeof arr2)////输出 "1,2,3,4,5,6"  string
    console.log(arr2.split(',')) //输出一个数组,这个数组的每个元素以","相隔。
    //最终输出 ["1","2","3","4","5","6"]



    //3.数组正则改良版
    const arr3 = JSON.parse('['+arr+']')
    console.log(arr3,typeof arr3)//输出 [1,2,3,4,5,6] object


    //4.使用递归方式来将数组扁平(很重要的思想!!!)
    var array = []
    function flat(arr){
      //遍历数组每一项
      for(var i = 0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
          //如果该元素依旧是数组的形式,再调用fn进入嵌套数组当中去
          flat(arr[i])
        }
        else{
          //直至读取到纯number元素,就把它推入新的数组
          array.push(arr[i])
        }
      }
      return array
    }
    console.log(flat(arr))