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

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

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 05:43:20549parcourir

How to Safely Remove Array Items During a Loop in JavaScript?

Parcourir un tableau et supprimer des éléments sans rompre la boucle

Pour parcourir efficacement un tableau et supprimer des éléments sans perturber l'itération, un une approche alternative est nécessaire. Lors de l'utilisation de splice() pour supprimer un élément lors d'une boucle, la réindexation du tableau peut causer des problèmes.

Une solution consiste à décrémenter le compteur de boucle (i) après la suppression d'un élément, en compensant la réindexation du tableau. -indexation.

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--; // Decrement to compensate for re-indexing
    }           
}

Alternativement, itérer dans l'ordre inverse peut également résoudre le problème car la suppression d'un élément n'affecte pas les éléments qui le précèdent dans le tableau.

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

En employant l'une de ces stratégies, vous pouvez efficacement parcourir un tableau, supprimer des éléments et maintenir une itération continue sans rompre la boucle de manière inattendue.

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