gpt4 book ai didi

javascript - 简单的 Javascript : Running a function over an array

转载 作者:行者123 更新时间:2023-11-29 15:11:49 24 4
gpt4 key购买 nike

我正在尝试创建一个顶点数组,然后在该数组上运行“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 - 调用 Array 构造函数是 rarely a good idea :

var vertices = [];

关于javascript - 简单的 Javascript : Running a function over an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com