4

我可以在 javascript 的一个语句中运行两个 for 循环吗?我会这样做吗?

for(initialize1,initialize2; condition1,condition2; incrementation1,incrementation2) 
4

3 回答 3

4

你指的是哪一个?这将执行一个循环并等待条件 1 或条件 2 失败:

for (initialize1, initialize2; condition1 && condition2; incrementation1, incrementation2)

这将执行嵌套在另一个循环中的一个循环:

for (initialize1; condition1; incrementation1)
    for (initialize2; condition2; incrementation2)
于 2012-10-11T21:47:21.513 回答
4

是的,您可以执行这样的 for 循环,但是您只有一个条件进行检查。如果你可以让它只检查所有变量的一个条件,例如 And (&&) 条件表达式,这将正常工作,或者如果你只是使用其他变量做其他事情,它也可以正常工作。

试试看:

for(var i=j=k=0; j<9 && k<12;i++, j++, k++){
    console.log(i,j,k);      
    i = 12;
}

@samdonly1

总是你只会有一个评估,但你可以做这样的事情:

function evalFor(i, j, k){
   if (k == 9) return false;
   else if (j == 7) return false;
   else if (i == 12 && j == 6) return false;
   else return true;
}
for(var i=j=k=0; evalFor(i, j, k);i++, j++, k++){
    console.log(i,j,k);     
    i = 11;
}

在这种情况下,您可以在其他函数中检查变量 i、j、k 并决定循环是停止还是继续。

于 2012-10-11T21:57:30.043 回答
0

我的意思是,我这样做的方式基本上是尝试访问位置 [0,2],[1,1],[2,0] 的嵌套数组我的解决方案很简单。每次循环运行一个计数器

let matrix = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
]
let leftDiag = []
let rightDiag = []
let counterJ =matrix.length-1
for(let i =0;i<matrix.length; i++){
  leftDiag.push(matrix[i][i])
  rightDiag.push(matrix[i][counterJ])
  console.log(i, counterJ)
  counterJ-=1
}
console.log(leftDiag)
console.log(rightDiag)

于 2021-09-13T07:57:45.900 回答