2016-06-12 2 views
0

私はRubyの配列の平坦化関数を読んでいて、Javascriptで同様の関数を探していましたが見つかりませんでした。だから、私はそれを自分で作りました。配列を平坦化する関数を作成する方法は? Javascriptの多次元配列から一次元配列へ

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

縮小/連想法を使用する場合は、多次元配列の回答が得られません。

あなたが考えるソリューションコードは何ですか?

+0

@AndrewMorton類似していますが、ソリューションが機能しないネストされた多次元配列の場合も同様です。この配列に対してこの解決策を試すと、[1,2、[3]、4]と表示されます。しかし、私は[1,2,3,4] だから、それは私の問題を解決していないと私はこの解決策を書いた – dmsbilas

+0

すべての数字は 'newArr = arr.toString()。split( '、')を行うことができます。 map(Number) ' – 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]