Maison > interface Web > js tutoriel > Comment supprimer en toute sécurité des éléments d'un tableau JavaScript pendant une boucle ?

Comment supprimer en toute sécurité des éléments d'un tableau JavaScript pendant une boucle ?

Linda Hamilton
Libérer: 2024-12-18 20:05:11
original
436 Les gens l'ont consulté

How to Safely Remove Items from a JavaScript Array While Looping?

Faire une boucle dans des tableaux et supprimer des éléments sans rompre la boucle

En JavaScript, parcourir un tableau et supprimer des éléments peut être délicat en raison de la façon dont splice() fonctionne. Lorsqu'un élément est supprimé d'un tableau à l'aide de splice(), le tableau est réindexé, ce qui peut conduire à ignorer un index et une longueur mise en cache obsolète.

Pour résoudre ce problème, il existe deux solutions élégantes :

Décrémentation de l'index après l'épissage

Une approche consiste à décrémenter l'index de boucle i après avoir effectué une épissure(). En décrémentant i, nous nous assurons que l'itération suivante ignore l'élément précédemment supprimé, évitant ainsi tout écart dans la boucle.

Itération à l'envers

Alternativement, nous pouvons itérer à travers le tableau dans l’ordre inverse. Partir du dernier index et décrémenter i à chaque itération évite le problème de réindexation puisque les éléments supprimés aux indices plus élevés n'affectent pas les indices inférieurs. Cette méthode permet une boucle plus efficace et plus propre.

Exemple :

Voici une version révisée du code utilisant la technique d'itération inversée :

var i = Auction.auctions.length;
while (i--) {
    ...
    if (...) { 
        Auction.auctions.splice(i, 1);
    } 
}
Copier après la connexion

Cette approche maintient l'intégrité de la boucle en itérant dans l'ordre inverse et en traitant les éléments supprimés sans affecter les éléments restants.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal