所以目前我正在尝试创建一个使用了很多嵌套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循环?
答案 0 :(得分:0)
我想你可以做一些像make conditionA
和conditionB
函数之类的东西,但更简单的选择就是将你的功能分成几个函数。
这样的事情:
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()
函数,该函数循环遍历该特定行中的每个圆。
这样做的好处是你一次只需要担心一个循环,它也会使测试变得更加容易,因为你可以直接调用“内部函数”来测试它是否按预期的方式工作。