> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 반복하는 동안 배열에서 항목을 안전하게 제거하는 방법은 무엇입니까?

JavaScript에서 반복하는 동안 배열에서 항목을 안전하게 제거하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-23 19:02:11
원래의
463명이 탐색했습니다.

How to Safely Remove Items from an Array While Iterating in JavaScript?

루프를 끊지 않고 배열을 반복하고 항목 제거

루프 내의 배열에서 항목을 제거할 때 splice()가 후속 요소를 렌더링하는 문제가 발생할 수 있습니다. 접근할 수 없습니다. 이는 splice()가 배열을 다시 색인화하여 항목을 건너뛸 가능성이 있기 때문입니다.

문제:

다음 예에서는 "초"를 감소시킨 다음 다음을 기준으로 항목을 접합합니다. 음수 값은 정의되지 않음을 유발합니다. 오류:

for (i = 0, len = Auction.auctions.length; i < len; i++) {
    auction = Auction.auctions[i];
    Auction.auctions[i]['seconds'] --;
    if (auction.seconds < 0) { 
        Auction.auctions.splice(i, 1);
    }           
}
로그인 후 복사

해결책:

이 문제를 해결하려면 두 가지 접근 방식을 고려하십시오.

  1. 감소 Splice() 이후의 인덱스: splice()로 항목을 제거한 후 감소 재인덱싱을 조정하기 위한 "i":

    for (i = 0, len = Auction.auctions.length; i < len; i++) {
        auction = Auction.auctions[i];
        Auction.auctions[i]['seconds'] --;
        if (auction.seconds < 0) { 
            Auction.auctions.splice(i, 1);
            i--;
        }           
    }
    로그인 후 복사
  2. 역방향 반복: 마지막 인덱스로 루프를 시작하고 역방향 반복:

    var i = Auction.auctions.length
    while (i--) {
        ...
        if (...) { 
            Auction.auctions.splice(i, 1);
        } 
    }
    로그인 후 복사

이렇게 하면 재인덱싱은 후속 요소에만 영향을 미치므로 지속적인 요소 생성이 가능합니다. 루프.

위 내용은 JavaScript에서 반복하는 동안 배열에서 항목을 안전하게 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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