簡體   English   中英

For-Loop生成多維數組

[英]For-Loop to Generate Multi Dimensional Array

預先感謝您抽出寶貴的時間來幫助我解決這個問題。

我正在嘗試使用for循環生成像這樣的簡單板。

var board = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];

但是,我在下面的嘗試並未成功。

function makeBoard(n){
  var board=[];
  for(var i=0; i<n; i++){
    for(var j=0; j<n; j++){
      board[i][j]=0;
    }
  }
  return board;
}

從技術上講,我可以只使用上面顯示的board變量,然后繼續,但是我更關注該原理。 使用for循環無法創建多維數組嗎? 有沒有簡單的方法可以使用array.push()完成此操作?

JavaScript沒有多維數組,因此您必須使用數組數組:

function makeBoard(n){
  var board=[];
  for(var i=0; i<n; i++){
    board[i] = [];
    for(var j=0; j<n; j++){
      board[i][j]=0;
    }
  }
  return board;
}

您錯過了board[i] = []; 需要為第二維創建每個數組。

注意:您也可以使用Array.prototype.fill

function makeBoard(n){
  var board=[];
  for(var i=0; i<n; i++){
    board[i] = Array(n).fill( 0 );
  }
  return board;
}

您需要為每個新的子數組初始化為array

 function makeBoard(n){ var board=[]; for(var i=0; i<n; i++){ board[i] = []; // <-- this is missing! for(var j=0; j<n; j++){ board[i][j]=0; } } return board; } document.write('<pre>' + JSON.stringify(makeBoard(5), 0, 4) + '</pre>'); 

沒有for循環的另一個版本

 function makeBoard(n){ return Array.apply(null, {length: n}).map(function () { return Array.apply(null, {length: n}).map(function () { return 0; }); }); } document.write('<pre>' + JSON.stringify(makeBoard(5), 0, 4) + '</pre>'); 

您生成一個數組,然后在其中循環新數組。 像這樣:

var arr = new Array(10);
for (var i = 0; i < 10; i++) {
  arr[i] = new Array(6);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM