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!