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