如何在JS中创建自定义double for循环

时间:2018-03-03 17:34:43

标签: javascript oop

所以目前我正在尝试创建一个使用了很多嵌套for循环的javascript应用程序,例如。

for (var i = 0; i < a; i++) {
    for (var j = 0; j < b; j++) {
        //Code to run
    }
}

因此,为了整洁,我认为我可以为此目的制定某种功能,可以像这样被召唤

doubleLoop(conditionA, conditionB) {
    //Code to execute
}

这在Javascript中是否完全可能,或者我只需要处理大量的for for循环?

1 个答案:

答案 0 :(得分:0)

我想你可以做一些像make conditionAconditionB函数之类的东西,但更简单的选择就是将你的功能分成几个函数。

这样的事情:

function draw(){
  doOuterTask();
}

function doOuterTask(){
  for (var i = 0; i < a; i++) {
    doInnerTask();
  }
}

function doInnerTask(){
  for (var j = 0; j < b; j++) {
    //Code to run
  }
}

这是一个更具体的例子:

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(0);
    drawGrid(10, 10);
}

function drawGrid(rowCount, columnCount){
    for(var rowIndex = 0; rowIndex < rowCount; rowIndex++){
        drawRow(rowIndex, rowCount, columnCount);
    }
}

function drawRow(rowIndex, rowCount, columnCount){
    for(var colIndex = 0; colIndex < columnCount; colIndex++){
        var circleWidth = width/columnCount;
        var circleHeight = height/rowCount;

        var x = colIndex * circleWidth;
        var y = rowIndex * circleHeight;

        fill(255);
        ellipse(x, y, circleWidth, circleHeight);

    }
}

此代码绘制了一个圆网格,您可以使用嵌套for循环执行此操作。相反,它会创建一个drawRow()函数,用于绘制单行圆,然后从drawGrid()函数调用它。 drawGrid()函数遍历每一行并调用drawRow()函数,该函数循环遍历该特定行中的每个圆。

这样做的好处是你一次只需要担心一个循环,它也会使测试变得更加容易,因为你可以直接调用“内部函数”来测试它是否按预期的方式工作。