> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 Unstoppable forEach 루프를 조기에 종료하려면 어떻게 해야 합니까?

JavaScript의 Unstoppable forEach 루프를 조기에 종료하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-10-17 21:19:02
원래의
295명이 탐색했습니다.

How Can I Prematurely Terminate JavaScript's Unstoppable forEach Loops?

JavaScript의 멈출 수 없는 forEach 루프를 중단하는 방법

JavaScript에서 forEach 루프를 사용하여 복잡한 중첩 데이터를 탐색할 때 다음을 수행해야 하는 시나리오가 발생할 수 있습니다. 반복 프로세스를 조기에 종료합니다. 그러나 다른 프로그래밍 구성과 달리 forEach는 break를 사용하여 루프를 종료하는 명시적인 방법을 제공하지 않습니다.

반복 역설

ForEach 루프는 콜백 함수를 실행합니다. 배열이나 객체의 각 요소에 대해 그러나 전통적인 break 문이 없으면 루프가 즉시 종료되지 않으므로 당황스러울 수 있습니다.

대체 종료 전략

break가 없음에도 불구하고 문에 유사한 효과를 얻을 수 있는 몇 가지 해결 방법이 있습니다.

1. 상황별 제어(추악한 방식)

forEach 콜백에 컨텍스트 개체를 전달하고 그 안에 부울 플래그를 설정하여 중지 시점을 나타냅니다. 이 접근 방식에는 보기 흉한 코드가 포함됩니다.

<code class="js">function recurs(comment) {
    const context = { stop: false };

    comment.comments.forEach(function(elem) {
        recurs(elem);

        // Check context flag
        if (context.stop) return;
    });
}</code>
로그인 후 복사

2. 예외 처리(논란의 여지가 있는 방식)

forEach 루프를 try-catch 블록으로 둘러싸고 반복을 종료하려는 경우 예외를 발생시킵니다. 이 방법은 성능에 영향을 미칠 수 있지만 캡슐화할 수 있습니다.

<code class="js">try {
    comment.comments.forEach(function(elem) {
        recurs(elem);

        // Throw exception to break
        if (you_want_to_break) throw new Error();
    });
} catch (e) {}</code>
로그인 후 복사

3. 재미있는 방식(every() 사용)

forEach와 유사하게 동작하지만 모든 요소가 조건을 충족하는지 여부를 나타내기 위해 true 또는 false를 반환하는 Every() 메서드를 사용합니다.

<code class="js">comment.comments.every(function(elem) {
    recurs(elem);

    // Return false to break
    if (you_want_to_break) return false;

    // Return true to continue
    return true;
});</code>
로그인 후 복사

이러한 대체 접근 방식을 활용하면 forEach 루프의 종료를 효과적으로 제어하여 JavaScript 애플리케이션의 동작을 사용자 정의할 수 있습니다.

위 내용은 JavaScript의 Unstoppable forEach 루프를 조기에 종료하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿