Как разбить 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;
, Он сломается.