How to break ForEach Loop in TypeScript

128,209

Solution 1

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;**
    }
  }
});

Solution 2

this.tab.committee.ratings.forEach is not operator. Typescript allows much more readable code.

Use for loop in style as follows:

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

p.s. forget "coding as with jQuery" in Angular. It just don't work.

Solution 3

You cannot ‘break’, it won’t even run because the break instruction is not technically in a loop. Solution? Just use a normal for loop. Nobody would laugh at you.

Share:
128,209
Arka
Author by

Arka

I love to code

Updated on July 05, 2022

Comments

  • Arka
    Arka almost 2 years

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

     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 area, i want to break the code and return the boolean value, but i am unable to do it right now. Can anybody help me.

    Thanks in advance.