Search code examples
javascriptangulartypescriptforeachbreak

How to break ForEach Loop in TypeScript


I have a the below code, on which i am unable to break the loop on certain conditions.

function 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;
}

On the star-marked areas, I want to break the code and return the boolean value, but I am unable to do. How can it be done?


Solution

  • It is not possible to break from forEach() normally.

    Alternatively you can use Array.every() because you wish to return false while breaking the loop.

    If you want to return true, then you can use 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;**
        }
      }
    });