Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在两个循环内访问数组中的对象?_Javascript_P5.js - Fatal编程技术网

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

Javascript 如何在两个循环内访问数组中的对象?,javascript,p5.js,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(设x=0;x

我在这个项目中使用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(设x=0;x
很明显,它是有效的,但我需要创建一个矩形类, 但我不知道如何将它们全部绘制到屏幕上,这是创建类后的代码,它实际上不起作用

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()
    }
}
for(设x=0;x
您的索引
x*y
错误,您需要:

 rects[x * rows + y].show();
但你也可以只考虑最后一个要素:

 rects[rects.length-1].show();
更直观(更可读、更高效)的方法是首先将新对象分配给一个单独的变量:

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

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

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

10分钟后我搔了搔头。。。您通常会遍历行,然后遍历每行的列。这将使您的数据从左到右,而不是从上到下。

非常感谢!您遗漏了一个括号
rects[y+(x*行)].show()但它确实有帮助