天天看點

遞歸實作數組的扁平化

數組扁平化即将多元數組轉化為一維數組:
           

例: [1,2,3,4,5,[2,3,4,[6,10]]]==>[1,2,3,4,5,2,3,4,6,10];

實作數組扁平化的方法有好幾種,在這裡隻說一種我比較常用的,自己感覺比較核心的方法,即周遊數組arr,若arr[i]為數組則遞歸周遊,直至arr[i]不為數組然後與之前的結果concat。

代碼實作:

function flatten(arr) {
    var res = [];
    arr.map(item => {
        if(Array.isArray(item)) {
            res = res.concat(flatten(item));
        } else {
            res.push(item);
        }
    });
    return res;
}
           

或者:

var arr = [[1,2,3],4,5,6,[[7]],[]]  //多元數組

 //将需要轉化的數組,以及最後需要傳回的數組進行傳參
function flatten(array,result = []){ 
//循環數組中的每一項,如果這一項是數組,則再次調用這個函數,
//否則直接将這項push到結果中,并且return出來
     for(var i of array){  
         if(Array.isArray(i)){
             flatten(i,result)
         }else{
           result.push(i)
         }
     }
     return result;
 }
 console.log(flatten(arr))