2017-04-19 23 views
0

2次元配列を作成し、要素で埋めたいと思っています。すべてのサブアレイで、1つのランダムな数字にする必要があります。 n個の反復までのように配列を配列にプッシュ

rowsarr at iteration 0: *,*,*,*,*,*,*,7,*,*,* 
colsarr at iteration 0: *,*,*,*,*,*,*,7,*,*,* 
rowsarr at iteration 1: *,*,*,*,*,*,*,7,*,*,* 
colsarr at iteration 1: *,*,*,*,*,*,*,7,*,*,*,*,*,*,*,*,*,*,7,*,*,* 
rowsarr at iteration 2: *,*,*,3,*,*,*,*,*,*,* 
colsarr at iteration 2: *,*,*,3,*,*,*,*,*,*,*,*,*,*,3,*,*,*,*,*,*,*,*,*,*,3,*,*,*,*,*,*,* 

と:

var n = 11; //number of elements in subarray 
    var listofnumbers = []; 
    var rows = []; 
    var cols = []; 
    var rand; 

    //fill listofnumbers array by numbers 
    for(i=0; i<=n-1; i++) { 
     listofnumbers[i] = n - i; 
    } 
    //reverse listofnumbers array 
    listofnumbers.reverse(); 

    //fill array 'cols' with another arrays 
    for(k=0; k<=n-1; k++) { 

     rand = listofnumbers[Math.floor(Math.random()*listofnumbers.length)]; // random digit from listofnumbers array 

     for(j=0; j<=n-1; j++) { 
      if(j == rand-1) { 
       rows[j] = rand-1; 
      } else { 
       rows[j] = "*"; 
      } 
     } 

     console.log("rowsarr at iteration " + k + ": " + rows); 

     cols[k] = rows; 

     console.log("colsarr at iteration " + k + ": " + cols); 
    } 

は、何らかの理由で、出力は次のようなものです。

質問1:なぜ "cols"配列は、最後に生成された "rows"配列ですべての要素を満たすのですか?最後に生成された配列 "行"を最後までプッシュします。

質問2: cols = [[n、n、n、n]、[n、n、n、n、n]、...]のような2次元配列を得るにはどうすればよいですか?今、私はcols = [n、n、n、n、n、n、n、n、n、n、n、n、n]だけですか?現時点で

私のコードは次のようになります。https://jsfiddle.net/qqf3fL5L/10/

+1

'それはすべきですプッシュ 'を除いて - 何かをどこにでもプッシュしないでください –

+0

最終出力は何でしょうか?乱数で埋められた2次元配列? – Weedoze

+0

このcols.push(rows)を使用します。 cols [k] =行の代わりに。 – JYoThI

答えて

0

ソリューション:

あなたは、このような最初のループ内の配列 '行' を宣言する必要があります:https://jsfiddle.net/qqf3fL5L/12/

for(k=0; k<n; k++) { 
     var rows = []; 
       for(j=0; j<n; j++) { 
        rows[j] = "*"; 
       } 

       cols[k] = rows; 
       var rand = listofnumbers[Math.floor(Math.random()*listofnumbers.length)]; // random digit from listofnumbers array 
       cols[k][rand-1] = rand; 
      } 
関連する問題