JavaScript中的类对象的二维数组

时间:2018-07-08 12:59:17

标签: javascript arrays dimensional

试图在JS中创建一个类对象数组。我不知道Javascript如何处理这个问题,但不是将10x10的网格,而是将所有数字都设置为10,而不是我要分配的i和j值。

class Box {
  constructor(width, height, x, y, inside) {
    this.width = width;
    this.height = height;
    this.x = x;
    this.y = y;
    this.inside = inside;
  }

  getHeight() {
    return this.height;
  }

  setHeight(newHeight) {
    this.height = newHeight;
  }
  let boxes = [
    []
  ];
  let testBox = new Box(1, 1, 1, 1, "Test")

  for (let i = 0; i < 11; i++) {
    for (let j = 0; j < 11; j++) {
      boxes[i[j]] = new Box(i, j, i, j, "Test");
    }
  }

  console.log(testBox.getHeight()); //Working Example
  console.log(boxes[3[3]].getHeight()); //outputs 10?
  console.log(boxes[4[6]].getHeight()); //outputs 10?

2 个答案:

答案 0 :(得分:0)

我在评论中写过的例子

class Box {
  constructor(width, height, x, y, inside) {
    this.width = width;
    this.height = height;
    this.x = x;
    this.y = y;
    this.inside = inside;
  }

  getHeight() {
    return this.height;
  }

  setHeight(newHeight) {
    this.height = newHeight;
  }
}

let boxes = [];

for (let i = 0; i < 11; i++) {
  for (let j = 0; j < 11; j++) {
    boxes[i] = [...(boxes[i] ? boxes[i] : []),
      new Box(i, j, i, j, "Test")
    ];
  }
}

console.log(boxes[3][3].getHeight());
console.log(boxes[4][6].getHeight());

答案 1 :(得分:0)

据我了解,您已经声明了一个类框,并且想要创建此类的对象数组。考虑到这种情况, 您的代码有语法错误:数组和循环必须在类定义之外。

现在,由于您要创建对象数组,因此它不是二维数组,而是一维数组。因此代码应如下所示

class Box {
constructor( width, height, x ,y, inside) {
    this.width = width;
    this.height = height;
    this.x = x;
    this.y = y;
    this.inside = inside;
}

getHeight(){
    return this.height;
}

setHeight(newHeight){
    this.height = newHeight;
}}

let boxes = [];

for(let i = 0; i < 11; i++){
       boxes.push(new Box(i,i+2,i,i+2,"Test"));
}

for(var cnt in boxes)
  console.log(boxes[cnt]);