2D阵列分配中意外的“未定义”元素

问题描述:

下面是我的完整代码。出于某种原因,它在设置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; 
 
    } 
 
}

它的失败,因为你是正确创建板。它在2失败,因为你有[[],[]]。如果你有[[]],那么它会在1失败。等3等。

此外,你的行是你的外部循环,列是你的内部循环。以下将做你需要的。

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; 
    } 
}