0

以下は私のフルコードです。何らかの理由でboard[2][0]を設定すると失敗し、理由がわかりません。私はそれはあなたが間違って自分のボードを作成しているので、それは失敗だけれども...2D配列割り当てで予期しない "未定義"要素

function randColor() { 
 
    min = Math.ceil(0); 
 
    max = colors.length; 
 
    return colors[Math.floor(Math.random() * (max - min)) + min]; 
 
} 
 

 
const colCount = 10; 
 
const rowCount = 10; 
 

 
var board = [[],[]]; 
 

 
const colors = ["#f00","#0f0","00f"]; 
 

 
class piece { 
 
    constructor(value, color) { 
 
     this.value = value; 
 
     this.color = color; 
 
    } 
 
} 
 

 
for (var x = 0; x < colCount; x++) { 
 
    for (var y = 0; y < rowCount; y++) { 
 
     var p = new piece('b',randColor()); 
 
     console.log("Setting board[" + x + "][" + y + "]"); 
 
     board[x][y] = p; 
 
    } 
 
}

答えて

1

単純なものだと確信しています。 [[]、[]]があるため、2で失敗します。 3などの場合は[1]で失敗します。

また、あなたの行は外側のループであり、列は内側のループです。以下はあなたが必要とすることをします。

function randColor() { 
    min = Math.ceil(0); 
    max = colors.length; 
    return colors[Math.floor(Math.random() * (max - min)) + min]; 
} 

const colCount = 10; 
const rowCount = 10; 

var board = []; 

const colors = ["#f00","#0f0","00f"]; 

function piece(value, color) { 
    this.value = value; 
    this.color = color; 
} 

for (var x = 0; x < rowCount; x++) { 
    board[x] = []; 
    for (var y = 0; y < colCount; y++) { 
     var p = piece('b', randColor()); 
     console.log("Setting board[" + x + "][" + y + "]"); 
     board[x][y] = p; 
    } 
} 
関連する問題