如何在TypeScript中打破ForEach循环

Ark*_*rka 14 foreach break typescript angular

我有一个下面的代码,我无法在某些条件下打破循环.

 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;
Run Code Online (Sandbox Code Playgroud)

}

在星标区域,我想打破代码并返回布尔值,但我现在无法做到.有谁能够帮我.

提前致谢.

Ami*_*ani 35

forEach()正常情况下是无法突破的。

或者,您可以使用Array.every()因为您希望false在中断循环时返回。

如果你想返回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;**
    }
  }
});
Run Code Online (Sandbox Code Playgroud)


Rob*_*erc 27

this.tab.committee.ratings.forEach不是运营商.Typescript允许更易读的代码.

使用风格循环,如下所示:

for(let a of this.tab.committee.ratings) {
   if(something_wrong) break;
}
Run Code Online (Sandbox Code Playgroud)

ps忘了Angular中的"用jQuery编码".它只是不起作用.

  • 只是补充一下,总是更喜欢使用“const”而不是“let”。您不想在这里为“a”赋予新值。 (3认同)
  • 对于大型数组,这会提高性能,因为它会在第一次匹配时中断,并且不需要遍历每个元素。 (2认同)

小智 10

你不能 \xe2\x80\x98break\xe2\x80\x99,它甚至不会运行\xe2\x80\x99,因为从技术上讲,break 指令不在循环中。\n解决方案?\n只需使用普通的 for 循环即可。没有人会嘲笑你。

\n