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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-12-26 06:54:10365parcourir

How to Safely Remove Array Items in JavaScript While Looping?

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

En JavaScript, l'utilisation de la méthode splice() pour supprimer des éléments d'un tableau présente souvent le défi de parcourir le tableau sans rencontrer de valeurs indéfinies. Dans le code fourni, l'utilisation de splice() dans la boucle for rend la propriété seconds de l'article mis aux enchères indéfinie, ce qui entraîne des erreurs.

Pour résoudre ce problème, envisagez les alternatives suivantes :

1. Décrémenter l'index de boucle après splice()

Après avoir supprimé un élément à l'aide de splice(), vous pouvez décrémenter l'index de boucle (i) pour compenser la réindexation du tableau. Cela garantit que la prochaine itération continue à partir du bon index.

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 the loop index
    }           
}

2. Itérer en sens inverse

En parcourant le tableau dans l'ordre inverse, la réindexation après splice() n'affectera pas les éléments restants de l'itération.

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

En adoptant avec l'une de ces approches, vous pouvez parcourir efficacement les tableaux et supprimer des éléments sans rencontrer le problème de valeur indéfinie et garantir l'intégrité du processus de boucle.

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