简单Javascript:在数组上运行函数



我正在尝试创建一个顶点数组,然后在此数组上运行'rect'函数以显示任意数量的矩形。现在,我有:

var vertices = new Array();
function setup() {
createCanvas(600, 600);
...
iter(width/2 - c/2, height/2 - c/2, c);
var i;
for (i = 0; i < vertices.length; i++) {
fill(200);
rect(vertices[i]);
}
}

然后:

function iter(x, y, len) {
r_1 = random(0, 1);
if (r_1 < 0.5){
vertices.push(x, y - len*0.5, len*0.5, len*0.5);
}
}

我见过很多关于使用map或foreach在数组上运行函数的内容,但我不知道为什么这不起作用(特别是,使用for循环在数组上执行函数(。我显然对这一切都很陌生!如果能解释一下我似乎误解了什么,我将不胜感激。

感谢

进行时

vertices.push(x,y-len*0.5,len*0.5,len*0.5)

您使用四个参数调用push,因此的四个项被推送到数组中。因为稍后要用verticies[i]调用rect,所以听起来verticies的每个项都应该是某种类型的数据容器——一个数组或一个对象,否则每个顶点的点将在多个标记上分离。例如,如果您要使用一个数组:

function iter(x, y, len) {
r_1 = random(0, 1);
if (r_1 < 0.5){
vertices.push([x, y - len*0.5, len*0.5, len*0.5]);
}
}

然后vertex数组中的每个数组扩展到rect参数列表中:

function setup() {
createCanvas(600, 600);
// ...
iter(width/2 - c/2, height/2 - c/2, c);
var i;
for (i = 0; i < vertices.length; i++) {
fill(200);
rect(...vertices[i]);
}
}

这假设rect是一个接受4个参数的函数。(您也可以更改rect,使其接受单个数组作为参数,并避免使用排列语法,如果您愿意的话(

您也可以考虑使用数组文字而不是new Array——调用数组构造函数很少是个好主意:

var vertices = [];

最新更新