4

javascriptの1つのステートメントで2つのforループを実行できますか?私はこのようにしますか?

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

3 に答える 3

4

これらのどれを意味しますか?これにより、1つのループが実行され、condition1またはcondition2のいずれかが失敗するのを待ちます。

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

これにより、一方のループがもう一方のループ内にネストされて実行されます。

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

はい、そのようなforループを実行できますが、チェックする条件は1つだけです。And(&&)条件式など、すべての変数の1つの条件だけをチェックできる場合は、これで問題なく機能します。他の変数を使用して他のことを行う場合でも、問題なく機能します。

それを試してみてください:

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

@ samdonly1

常に1つの評価しかありませんが、次のようなことができます。

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 に答える