所以目前我正在尝试创建一个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 循环的负载?
我想你可以做一些事情,比如制作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()
函数,该函数循环遍历该特定行中的每个圆圈。
这样做的好处是,您一次只需要担心一个循环,并且它还使测试变得更加容易,因为您可以直接调用"内部函数"来测试它是否按预期方式工作。