0

break;私の質問は次のとおりです。呼び出される関数を介してまたはcontinue;for ループをトリガーするにはどうすればよいですか? 問題は、コードの複雑さを避けるために、考えられるすべての条件をループ内にネストしたくないということです。私はいくつかの疑似例について考えていました:

var someObjects = [...] //array with some js objects    

for (var i = 0; i < someObjects.length; i++) {
  var element = someObjects[i];
  doSomething(element);
}

function doSomething(object) {
  //some code here
  if (somethingIsDefined) {
    doSomethingElse(object);
  }
}

function doSomethingElse(anotherObject) {
  //some more code here
  if (somethingMatches) {
    //here i would like to break the most upper loop
  }
}

//someObjects will be processed

たとえば、ブール変数を導入し、ループ内でそれが true または false であるかどうかを確認し、それに応じて、break;またはcontinue;.
しかし、これは - たとえそれが 1 行であっても - ネストを増やすことになります。考えられる解決策はありますか?

4

1 に答える 1

0

私が推奨するUnderscore ライブラリを使用している場合は、次のように記述できます。

_.any(someObjects, doSomething);

function doSomething(object) {
  //some code here
  return somethingIsDefined &&
    doSomethingElse(object);
}

function doSomethingElse(anotherObject) {
  //some more code here
  return  somethingMatches;
}
于 2016-11-17T06:18:21.480 に答える