2016-06-12 77 views
0

我讀Ruby的數組扁平化功能,尋找在Javascript中類似的功能,並沒有發現。所以,我自己創造了它。如何創建一個用於拼合數組的函數?多維數組一個維數組在Javascript

Input: [[1,2,[3]],4] 
    Output : [1,2,3,4] 

如果你想使用reduce/concate方法,你將無法獲得多維數組所需的答案。

什麼可以成爲解決方案的代碼,你覺得呢?!

+0

@AndrewMorton看起來很相似,但是對於嵌套的多維數組,解決方案不起作用。如果你爲這個給定的數組嘗試這個解決方案,你會看到:[1,2,[3],4]。但是我想[1,2,3,4] 所以,這並沒有解決我的問題,我寫了這個解決方案 – dmsbilas

+0

如果所有的數字都是可以做的'newArr = arr.toString()分裂(「」)。地圖(數字)' – charlietfl

+0

@dmsbilas掛線是一個漫長的,但[這個答案](http://stackoverflow.com/a/15030117/13)是一個你需要的。 –

回答

0

所以,這裏是我用來解決解決方案的代碼。

var givenArr = [[1,2,[3]],4]; 
    var outputArray = []; 

    function typeOf(value) { 
     var s = typeof value; 
     if (s === 'object') { 
     if (value) 
      { 
      if (Object.prototype.toString.call(value) == '[object Array]') { 
       s = 'array'; 
      } 
      }else{ 
      s = 'null'; 
     } 
     } 
     return s; 
    } 

    function getElementFromArray(array) 
    { 
     if(array.length == 0) return; 
     for(var i = 0; i< array.length; i++) 
     { 
      if(typeOf(array[i]) === 'array') 
      { 
       getElementFromArray(array[i]); 
      }else{ 
       outputArray.push(array[i]); 
      } 
     } 
    }//end getElementFromArray 

    getElementFromArray(givenArr); 

    console.log(outputArray); 

    //output [1,2,3,4] 
相關問題