[英]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.