数组拉平的3种方法

495 阅读1分钟

1.flat()

var str= [1, [2, 3], [4, 5], [6, [7, 8], 9, [[[10, [[11, 12], 13], 14], 15, 16], 17], 18]]
//参数表示要拉平几层  当不知道要拉平几层是可设置参数 Infinity 全部拉平
str=str.flat(Infinity)
console.log(str)//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]

2.toString()

注意用toString()方法拉平数组返回的是字符串

var str= [1, [2, 3], [4, 5], [6, [7, 8], 9, [[[10, [[11, 12], 13], 14], 15, 16], 17], 18]] 
str = str.toString()
console.log(str)//1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18

3.递归方法

var str= [1, [2, 3], [4, 5], [6, [7, 8], 9, [[[10, [[11, 12], 13], 14], 15, 16], 17], 18]] 
var newStr=[]
function getSameLevel(arr){
for(var i=0;i<arr.length;i++){
      if(arr[i].length>1){
            getSameLevel(arr[i])//反复调用
       }else{
             newStr.push(arr[i])
             }
       }  
       return newStr    
}  
console.log(getSameLevel(str))//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]