반응형
TypeScript에서 각 루프를 끊는 방법
저는 아래 코드를 가지고 있는데, 특정 조건에서는 루프를 해제할 수 없습니다.
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;
}
별이 표시된 영역에서는 코드를 끊고 부울 값을 반환하고 싶지만 그럴 수 없습니다.어떻게 할 수 있습니까?
this.tab.committee.ratings.forEach
연산자가 아닙니다.
타이프스크립트를 사용하면 훨씬 더 읽기 쉬운 코드를 사용할 수 있습니다.
사용for
다음과 같은 스타일의 루프:
for (let a of this.tab.committee.ratings) {
if (something_wrong) break;
}
p.s. Angular에서 "jQuery와 동일한 코딩"을 잊어버립니다.그것은 단지 작동하지 않습니다.
에서 벗어날 수 없습니다.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;**
}
}
});
중단 명령어가 기술적으로 루프에 있지 않기 때문에 '중단'할 수도 없고 실행되지도 않습니다.해결책?루프는 보통을 사용합니다.아무도 당신을 비웃지 않을 것입니다.
저는 더 나은 해결책은 사용하는 것이라고 생각합니다.With for는 값이 발견되면 반환하고 루프를 해제할 수 있습니다.훨씬 더 깨끗한 솔루션입니다.
for (element of this.tab.committee.ratings) {
// and here you use your element, when you return a values it stops the cycle
if (element === something){
return element;
}
}
const blocks = document.querySelectorAll('.block');
var breakMe = false;
blocks.forEach((block, i) => {
if(breakMe == false) {
/*code that you want*/
if(i < 2) {
block.style.background = 'red';
} else if(i != 4) {
block.style.background = 'blue';
} else if(i == 4) {
breakMe = true;
/*change breackMe to true if you want to breack forEach*/
}
}
})
<!DOCTYPE html>
<html lang="en">
<body>
<div id="container">
<div class="block" style="width: 200px; height: 200px; background: purple; margin: 50px"></div>
<div class="block" style="width: 200px; height: 200px; background: purple; margin: 50px"></div>
<div class="block" style="width: 200px; height: 200px; background: purple; margin: 50px"></div>
<div class="block" style="width: 200px; height: 200px; background: purple; margin: 50px"></div>
<div class="block" style="width: 200px; height: 200px; background: purple; margin: 50px"></div>
</div>
</body>
</html>
try-catch 문을 사용하여 각 루프에 대해 브레이크할 수 있습니다.
try {
arr.forEach((item:any) => {
if(item === '2') {
throw "break";
}
console.log('Item ID: ', item);
});
} catch(e) {
console.log('Warn Error',e);
}
간단하게return false;
깨질 거예요.
언급URL : https://stackoverflow.com/questions/51747397/how-to-break-foreach-loop-in-typescript
반응형
'programing' 카테고리의 다른 글
파이썬에서는 언제 메소드 대신 함수를 사용해야 합니까? (0) | 2023.08.21 |
---|---|
요소 너비를 만드는 방법: 100% - 패딩? (0) | 2023.08.21 |
파이썬처럼 자바스크립트로 된 사전이 있습니까? (0) | 2023.08.21 |
AV Player 대리자가 없습니까?노래가 재생되면 추적하는 방법은 무엇입니까?목표 아이폰 개발 (0) | 2023.08.01 |
@Transactional은 어디에 두나요?인터페이스 사양 또는 구현 시? (0) | 2023.08.01 |