La méthode de parcours la plus couramment utilisée est l'instruction for (il existe également des méthodes récursives et while). Lorsque nous parcourons un tableau, nous faisons généralement ceci :
Il s'agit de la méthode de traversée la plus couramment utilisée : la traversée vers l'avant. Cela va du premier élément au dernier élément du tableau.
Alors pourquoi le drame d’aujourd’hui mentionne-t-il également la traversée en ordre inverse ?
Ici, je dois mentionner l'un des modules les plus couramment utilisés parmi les composants écrits dans les petits drames : les événements. Utilisé pour créer des modèles d'événements personnalisés, gérer la surveillance et le déclenchement des événements, le mode de publication et d'abonnement (pub/sub) le plus simple. Parce qu'il a été récemment découvert qu'il existe un risque caché de débordement de mémoire, il est nécessaire d'ajouter une méthode de déliaison sur la base d'origine.
Étant donné que les fonctions de rappel avec le même nom d'événement sont placées dans le même tableau, pour dissocier, il vous suffit de trouver la fonction de rappel correspondante dans le tableau (la même fonction de rappel peut être liée plusieurs fois) et de la supprimer.
C'est une exigence très simple, il est donc naturel d'écrire du code similaire à celui-ci :
Existe-t-il un code normal, mais le résultat final est : [1, 2, 2, 1, 1, 2]. De toute évidence, le résultat de l'exécution n'est pas celui attendu.
Quel est le problème ?
Après une analyse minutieuse, j'ai découvert que le problème réside dans le fait que chaque fois que la correspondance est réussie, une fois l'opération de suppression effectuée, l'élément suivant à vérifier sera ignoré, car chaque élément suivant du tableau avance d'un .
J'ai trouvé le problème, modifié le code et ajusté l'index de séquence (i) après avoir effectué l'opération de suppression.
Le problème est résolu, mais j'ai toujours l'impression que modifier l'index de séquence est une allumette de la boucle for. Puis j’ai eu un éclair d’inspiration, bang bang bang, et j’ai tapé le code suivant :
Le processus de parcours reste inchangé, le seul changement est que l'ordre de parcours a changé, et en passant, il y a un total variable de moins.
D'accord, j'avoue que ce que j'ai écrit aujourd'hui est très idiot, mais à travers cet exemple, je vous le rappellerai lors de l'écriture de code à l'avenir Lors du processus de parcours, s'il s'agit de modifier le tableau lui-même (ajout et suppression), La traversée inversée est une comparaison d'un moyen sûr de traverser.
Codage des notes, laissez-les rire de vous plus tard !
Veuillez indiquer la source lors de la réimpression : http://bh-lay.com/blog/148c07761fa