web-dev-qa-db-ja.com

JavaScriptのスイッチケースの内側からforループを解除する

Forループから抜け出すために使用する必要があるコマンドは、//code insideから直接//code afterにジャンプする

//code before
for(var a in b)
    {
    switch(something)
        {
        case something:
            {
            //code inside
            break;
            }
        }
    }
//code after
23
BASILIO

残念ながら、JavaScriptは複数のレベルでbreakingを許可していません。これを行う最も簡単な方法は、無名関数を作成してreturnステートメントの機能を活用することです。

//code before
(function () {
    for (var a in b) {
        switch (something) {
        case something:
            {
                //code inside
                return;
            }
        }
    }
}());
//code after

これが機能するのは、returnが関数を終了し、したがって暗黙的にループが終了して、code afterに直接移動するためです。

17
lonesomeday

終了する必要があるときにフラグを設定するには、別の変数を使用します。

var b = { firstName: 'Peter', lastName: 'Smith' };
var keepGoing = true;
for (var a in b) {
  switch (true) {
    case 1:
      keepGoing = false;
      break;
  }
  if (!keepGoing) break;
  console.log('switch end');
}
console.log('for end');

23
Brad Christie

label を使用できます。ラベルの付いたステートメントを用意し、そのラベルに違反します。 outerLoopは、ここで使用したラベルです。

//code before
outerLoop:
for (var a in b) {
    switch (something) {
        case 'case1':
            //code inside
            break outerLoop;
    }
}
//code after
21
Sabarish Sankar

それはあなたが何を達成したいかに依存します...私が一般的に行うことの一つはこのようなものです:

    //code before
for(var a in b)
{
    var breakFor = false;
    switch(something)
    {
        case something:
        {
            //code inside
            breakFor = true;
            break;
        }
    }
    if (breakFor)
        break;
}
//code after
9
Jeff

どのループ/スイッチを解除するかがわかります。

function foo ()
{
    dance:
    for(var k = 0; k < 4; k++){
        for(var m = 0; m < 4; m++){
            if(m == 2){
                break dance;
            }
        }
    }
}

この答え を参照してください。

2
Skarlinski
for(var i=0; i<b.length; i++) {
   switch (something) {
       case 'something1':
           i=b.length;
   }
}

反復変数iがループの終わりに到達すると、それは壊れます。しかし、反復変数を強制的にループの終わりに到達させることができます。

0
gest

私は常に、条件付きステートメントを使用することは、少なくとも概念的には、コードフローを制御する最も簡単な方法の1つであると考えています。

var done = false;
//code before for loop
for(var a in b){
    switch(switchParameter){
        case firstCase:
            //code inside
            done = true;
            break;
        }
    }
    if(done)
        break;
}
//code outside of for loop
0
Andrew_CS