Maison >interface Web >js tutoriel >Comment supprimer en toute sécurité des éléments de tableau pendant une itération en JavaScript ?

Comment supprimer en toute sécurité des éléments de tableau pendant une itération en JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 18:54:11232parcourir

How to Safely Remove Array Items During Iteration in JavaScript?

Suppression d'éléments d'un tableau dans une boucle : préservation de l'itération

Problème :

Itérer dans un tableau et supprimer des éléments peut entraîner comportement inattendu lors de l'utilisation de la méthode splice(). Au fur et à mesure que les éléments sont supprimés, le tableau est réindexé, ignorant potentiellement les éléments suivants. Cela conduit à l'erreur de variable non définie mentionnée.

Solution :

Il existe deux approches principales pour résoudre ce problème :

  1. Décrémentation de l'index de boucle : après avoir supprimé un élément à l'aide de splice(), décrémentez l'index de boucle (i--) pour tenir compte du réindexation. Cela garantit que la boucle continuera avec le bon élément.
  2. Itération inverse : Au lieu d'itérer dans l'ordre croissant (i ), itérez en sens inverse (i--) pour éviter les effets de re -indexage. Dans cette approche, l'élément suivant à examiner est situé à un index inférieur à l'index actuel, donc la réindexation ne l'affecte pas.

Exemple :

var i = Auction.auctions.length;
while (i--) {
    ...
    if (...) {
        Auction.auctions.splice(i, 1);
    }
}

En itérant à l'envers, la suppression d'éléments n'affecte pas l'élément suivant dans l'itération. Par conséquent, la boucle continue sans interruption, supprimant les éléments à volonté.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn