每天一个JS小知识点【数组扁平化】

249 阅读1分钟

大家好,我是怀恋,很高兴和大家分享这一遍文章。写这篇文章的目的是用来记录自己前端的学习情况,也为自己马上面临的秋招做好准备。文笔不好,多多包涵。

什么是数组扁平化?

  数组扁平化就是将多维数组转化为一维数组。例如:[1,[2,3],[4,5,[6]]]==>[1,2,3,4,5,6]。

1.利用ES6为数组的提供的flat()

flat()方法接收一个参数,返回一个新的数组,不会影响原数组。

该方法默认只展平“一层”,当传递的参数为Infinity时,可将多维数组转为一维数组。

let arr=[1,[2,3],["a",["b"]],"c"]; 
    function arrFlat(arr){ 
    return arr.flat(Infinity);     
   }    
     console.log(arrFlat(arr)); // [1,2,3,"a","b","c"]

2.利用reduce()

 reduce() 将初始元素和当前元素的结果返回作为初始元素的这一特性。

let arr=[1,[2,3],["a",["b"]],"c"]; 
     function arrFlat(arr){      
     return   arr.reduce(function(result,item,currentIndex,arr){  
     return result.concat(Array.isArray(item)?arrFlat(item):item);  
            },[])        
}      
   console.log(arrFlat(arr)); // [1,2,3,"a","b","c"]

3.利用递归循环遍历

let arr=[1,[2,3],["a",["b"]],"c",false];  
      function arrFlat(arr){     
    let result=[]; 
        for(const item of arr){        
     if(Array.isArray(item)){          
     result=result.concat(arrFlat(item));     
        }else{          
       result.push(item);      
       }    
     }      
   return result;      
  }      
  console.log(arrFlat(arr)); // [1,2,3,"a","b","c",false]

4.利用展开运算符...

let arr=[1,[2,3],["a",["b"]],"c",false];  
      function arrFlat(arr){   
         while(arr.some(Array.isArray)){    
            arr=[].concat(...arr);      
      }       
     return arr;    
    }     
   console.log(arrFlat(arr)); // [1,2,3,"a","b","c",false]

这就是我能够知道的一些方法了,如果有错误或者其它更加高效的方法请在评论留言。谢谢阅读。