Die am häufigsten verwendete Traversalmethode ist die for-Anweisung (es gibt auch rekursive und while-Methoden). Wenn wir ein Array durchlaufen, machen wir normalerweise Folgendes:
Dies ist die am häufigsten verwendete Durchquerungsmethode: Vorwärtsdurchquerung. Es geht vom ersten Element bis zum letzten Element im Array.
Warum erwähnt das heutige Drama dann auch die Durchquerung in umgekehrter Reihenfolge?
Hier muss ich eines der am häufigsten verwendeten Module unter den in kleinen Dramen geschriebenen Komponenten erwähnen: Ereignisse. Wird zum Erstellen benutzerdefinierter Ereignismodelle, zum Überwachen und Auslösen von Ereignissen sowie zum einfachsten Veröffentlichungs- und Abonnementmodus (Pub/Sub) verwendet. Da kürzlich festgestellt wurde, dass eine versteckte Gefahr eines Speicherüberlaufs besteht, muss auf der ursprünglichen Basis eine Entbindungsmethode hinzugefügt werden.
Da Rückruffunktionen mit demselben Ereignisnamen im selben Array platziert sind, müssen Sie zum Aufheben der Bindung nur die entsprechende Rückruffunktion im Array finden (dieselbe Rückruffunktion kann mehrmals gebunden sein) und sie entfernen.
Es handelt sich um eine sehr einfache Anforderung, daher ist es selbstverständlich, Code ähnlich dem folgenden zu schreiben:
Gibt es normalen Code, aber das endgültige Ausgabeergebnis ist: [1, 2, 2, 1, 1, 2]. Offensichtlich ist das Ausführungsergebnis nicht wie erwartet.
Was ist das Problem?
Nach sorgfältiger Analyse habe ich herausgefunden, dass das Problem darin liegt, dass jedes Mal, wenn die Übereinstimmung erfolgreich ist, nach der Durchführung des Entfernungsvorgangs das nächste zu überprüfende Element übersprungen wird, da jedes nachfolgende Element im Array um eins nach vorne verschoben wird .
Ich habe das Problem gefunden, den Code geändert und den Sequenzindex (i) angepasst, nachdem ich den Entfernungsvorgang durchgeführt habe.
Das Problem ist gelöst, aber ich habe immer noch das Gefühl, dass das Ändern des Sequenzindex eine Neckerei für die for-Schleife ist. Dann hatte ich einen Geistesblitz, zack, zack, zack, und tippte den folgenden Code ein:
Der Durchlaufprozess bleibt unverändert, die einzige Änderung besteht darin, dass sich die Durchlaufreihenfolge geändert hat, und es gibt übrigens eine Variablensumme weniger.
Okay, ich gebe zu, dass das, was ich heute geschrieben habe, sehr albern ist, aber ich werde Sie anhand dieses Beispiels daran erinnern, dass beim Schreiben von Code in Zukunft das Array selbst geändert werden muss (Hinzufügen und Löschen). Die umgekehrte Durchquerung ist eine vergleichsweise sichere Art der Durchquerung.
Kodierungsnotizen, lassen Sie sie später zum Lachen über sich selbst!
Bitte geben Sie beim Nachdruck die Quelle an: http://bh-lay.com/blog/148c07761fa