如何在两个循环内访问数组中的对象?

时间:2019-06-17 20:56:56

标签: javascript p5.js

我在此项目中使用的是p5.js, 我想制作可以填满整个画布的矩形,所以我将其编码为:

for (let x = 0; x < cols; x++) {
    for (let y = 0; y < rows; y++) {
        cx = w + x * w - w;
        cy = w + y * w - w;
        rect(cx, cy, w, w)
    }
}

显然可以,但是我需要制作一个矩形类, 但是我不知道如何将它们全部绘制到屏幕上,这是创建类后的代码,它实际上是行不通的...

for (let x = 0; x < cols; x++) {
    for (let y = 0; y < rows; y++) {
        cx = w + x * w - w;
        cy = w + y * w - w;        
        rects.push(new Rectangle(cx, cy, w));
        rects[x * y].show()
    }
}

2 个答案:

答案 0 :(得分:2)

您的索引x * y错误,您需要:

 rects[x * rows + y].show();

但是您也可以采用最后一个元素:

 rects[rects.length-1].show();

更直观(更易读,更高效)将是先将新对象分配给一个单独的变量:

 var rect = new Rectangle(cx, cy, w);
 rects.push(rect);
 rect.show();

答案 1 :(得分:1)

假设矩形类可以按您希望的方式工作,则只需将最后一行更改为:

rects[y + (x * rows].show();

挠挠我的头10分钟后...通常,您将依次遍历各行,然后遍历各行的列。这样会将您的数据从左到右,而不是从上到下。