web-dev-qa-db-ja.com

TypeScriptでForEachループを解除する方法

私は以下のコードを持っていますが、特定の条件でループを解除することはできません。

 isVoteTally(): boolean {
let count = false;
this.tab.committee.ratings.forEach(element => {

  const _fo = this.isEmptyOrNull(element.ratings.finalOutcome.finaloutlook);
  const _foreign = this.isEmptyOrNull(element.ratings.finalOutcome.foreign);
  const _local = this.isEmptyOrNull(element.ratings.finalOutcome.local);
  const _tally = element.ratings.finalOutcome.voteTally.maj + element.ratings.finalOutcome.voteTally.dis;

  if (_fo == false && _foreign == false && _local == false) {
    if (_tally > 0) {
      **return count = false;**
    }
  } else {
    if (_tally < 0) {
      **return count = false;**
    }
  }
});
return count;

}

星印の付いた領域で、コードをbreakにして、ブール値を返したいのですが、今はできません。誰でも私を助けることができます。

前もって感謝します。

12
Arka

forEach()から正常に中断することはできません。

または、ループを中断しながらfalseを返したいため、 Array.every() を使用できます。

Trueを返したい場合は、 Array.some() を使用できます

this.tab.committee.ratings.every(element => {

  const _fo = this.isEmptyOrNull(element.ratings.finalOutcome.finaloutlook);
  const _foreign = this.isEmptyOrNull(element.ratings.finalOutcome.foreign);
  const _local = this.isEmptyOrNull(element.ratings.finalOutcome.local);
  const _tally = element.ratings.finalOutcome.voteTally.maj + element.ratings.finalOutcome.voteTally.dis;

  if (_fo == false && _foreign == false && _local == false) {
    if (_tally > 0) {
      **return count = false;**
    }
  } else {
    if (_tally < 0) {
      **return count = false;**
    }
  }
});
3
Amit Chigadani

this.tab.committee.ratings.forEachは演算子ではありません。 TypeScriptでは、はるかに読みやすいコードを使用できます。

次のように、スタイルでforループを使用します。

for(let a of this.tab.committee.ratings) {
   if(something_wrong) break;
}

追伸Angularの「jQueryのようなコーディング」を忘れてください。うまくいきません。

23
Roberc

これは Lodash

forEach(this.diningService.menus, (m: any) => {
      this.category = find(m.categories, (c: any) => {
        return c.id === Number(categoryId);
      });
      if (this.category) { return false; }
    });
0
Sampath