Javascript 如何创建阵列的二维阵列?

Javascript 如何创建阵列的二维阵列?,javascript,arrays,multidimensional-array,p5.js,conways-game-of-life,Javascript,Arrays,Multidimensional Array,P5.js,Conways Game Of Life,我正在做这个任务,我需要构建一个版本的生活游戏。我很难正确设置这个2D数组,以便跟踪细胞是“活的”还是“死的”。我好像撞到墙了,我需要有人帮我找到正确的方向 var grid; function setup () { createCanvas(400, 400); grid = new Grid(20); } function draw () { background(245); grid.draw(); } class Grid { constructor (cellS

我正在做这个任务,我需要构建一个版本的生活游戏。我很难正确设置这个2D数组,以便跟踪细胞是“活的”还是“死的”。我好像撞到墙了,我需要有人帮我找到正确的方向

var grid;

function setup () {
 createCanvas(400, 400);
 grid = new Grid(20);
}

function draw () {
 background(245);

   grid.draw();
}

class Grid {
  constructor (cellSize) {
   this.cellSize = cellSize;
   this.numberOfColumns = height/this.cellSize;
   this.numberOfRows = width/this.cellSize;

   this.cells = new Array(this.numberOfColumns);
   this.rows = new Array(this.numberOfRows);
   this.twoDArray = new Array(this.cells);

  for (var i = 0; i < this.cells; i++) {
   this.twoDArray[i] = new Array(this.rows);
  }


 // for (var column = 0; column < this.numberOfColumns; column ++) {
  // for (var row = 0; row < this.numberOfRows; row++) {
   // this.cells[column][row] = new Cell(column, row, cellSize);
  //}
  // }

 print(this.cells);
}

draw() {
 for (var column = 0; column < this.numberOfColumns; column ++) {
   for (var row = 0; row < this.numberOfRows; row++) {
     fill(240); 
     noStroke();
     rect(column * this.cellSize + 1, row * this.cellSize + 1, this.cellSize - 1, this.cellSize - 1);
    }
  }
 }
}
   class Cell {
    contructor (column, row, cellSize) {
     this.column = column;
     this.row = row;
     this.cellSize = cellSize;
     isAlive = false;
    }
  }
var网格;
函数设置(){
createCanvas(400400);
网格=新网格(20);
}
函数图(){
背景(245);
grid.draw();
}
类网格{
构造函数(单元大小){
this.cellSize=cellSize;
this.numberOfColumns=高度/this.cellSize;
this.numberOfRows=宽度/this.cellSize;
this.cells=新数组(this.numberOfColumns);
this.rows=新数组(this.numberOfRows);
this.twoDArray=新数组(this.cells);
对于(var i=0;i

每当我尝试取消注释上面注释的代码时,控制台都会说:TypeError:无法设置未定义的“0”属性。我肯定我遗漏了一些明显的东西,但我似乎看不出是什么。如果您能给予任何帮助,我们将不胜感激

您不能将
this.cells
用作多维数组,因为它按照
新数组的方式填充了空元素

您应该将代码更改为以下内容:

for (var column = 0; column < this.numberOfColumns; column ++) {
  this.cells[column] = []; // or use here new Array or similar
  for (var row = 0; row < this.numberOfRows; row++) {
    this.cells[column][row] = new Cell(column, row, cellSize);
  }
}
for(var column=0;column
您不能将
此.cells
用作多维数组,因为它按照
新数组的方式填充了空元素

您应该将代码更改为以下内容:

for (var column = 0; column < this.numberOfColumns; column ++) {
  this.cells[column] = []; // or use here new Array or similar
  for (var row = 0; row < this.numberOfRows; row++) {
    this.cells[column][row] = new Cell(column, row, cellSize);
  }
}
for(var column=0;column
必须将每一行显式初始化为其自己的新数组。
Array()
构造函数只提供一个空数组。您必须显式地将每一行初始化为它自己的新数组。
Array()
构造函数只提供一个空数组。