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

时间:2018-12-15 22:28:35

标签: javascript arrays

我试图创建一个顶点数组,然后在该数组上运行'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循环在数组上运行函数)。我显然对所有这些东西都是新手!对于我似乎误会的解释,将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

这样做的时候

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

您正在使用四个参数调用push,因此四个项将被推送到数组。因为您稍后要用rect调用verticies[i],所以听起来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 = [];