Как разбить ForEach Loop в TypeScript

У меня есть код ниже, на котором я не могу сломать цикл на определенных условиях.

 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;

}

На отмеченной звездочкой области я хочу сломать код и вернуть значение boolean, но я не могу сделать это прямо сейчас. Кто-нибудь может мне помочь.

Заранее спасибо.

Ответы

Ответ 1

Невозможно нормально forEach() с 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;**
    }
  }
});

Ответ 2

this.tab.committee.ratings.forEach не является оператором. Машинопись позволяет гораздо более читаемый код.

Используйте для цикла в стиле следующим образом:

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

ps забывает "кодирование как с jQuery" в Angular. Это просто не работает.

Ответ 3

Это для Lodash

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

Ответ 4

просто return false; , Он сломается.