Heim > Artikel > Web-Frontend > JS stapelt DS&A-Intro
Wenn Sie ein modernes Gerät verwenden, sind Sie wahrscheinlich auf Stack-Operationen gestoßen, auch wenn Sie es nicht bemerkt haben. Stapel sind bei vielen Programmieraufgaben von grundlegender Bedeutung, von der Verwaltung von Funktionsaufrufen bis zur Ermöglichung von Rückgängig-Vorgängen.
Stapel sind eine lineare Datenstruktur, die der Reihenfolge der Operationen folgt und Daten in einer LIFO- oder FILO-Struktur organisiert.
LIFO: Der Letzte rein, der Erste raus.
FILO: Der Erste rein, der Letzte raus.
Stapel werden verwendet, um Vorgänge an einer Sammlung von Elementen durchzuführen, z. B. das Hinzufügen und Entfernen von Elementen, das Anzeigen oberster Elemente und das Anzeigen, ob die Sammlung leer oder voll ist.
Zum Beispiel:
Wenn Sie in Ihrem Webbrowser gerade www.ESPN.com besuchen und versehentlich auf eine Anzeige für Baseball-Tickets für die Chicago White Sox klicken. Wir haben unseren Stapel vergrößert, vielleicht nicht absichtlich, aber jetzt steht es ganz oben auf unserem Stapel. Dann stellen wir fest, dass die Chicago White Sox 15 Spiele in Folge verloren haben. Nun ... lass uns den Zurück-Button drücken (das Element von der Oberseite des Stapels entfernen).
Ja, das da oben. Dies demonstriert das LIFO-Prinzip im Stack-Betrieb. Wir verlassen (entfernen) die zuletzt besuchte Seite aus unserem Verlauf (oder unseren Stacks), um zu www.ESPN.com zurückzukehren ... vielleicht nächstes Jahr White Sox's.
Stack-Operationen werden häufig in Anwendungen verwendet, die den Webbrowser-Verlauf in Ordnung halten, in Texteditoren und Funktionsaufruf-Stacks rückgängig machen und wiederherstellen müssen, um nur einige zu nennen.
Funktionen, die häufig beim Ändern von Stapeln verwendet werden, sind wie folgt:
.Push = um ein Element zu einem Stapel hinzuzufügen.
.pop = zum Entfernen des obersten Elements aus einem Stapel.
.peek = um das oberste Element eines Stapels anzuzeigen.
.length/.size = um die Gesamtzahl der Indizes in einem Stapel zu bestimmen. Javascript verwendet (.length)
.isEmpty = prüft, ob ein Stapel leer ist.
.isFull = prüft, ob ein Stapel voll ist; wenn das Array eine feste Größe hat.
Stacks-Datenstrukturen können mit einer Stacks-Klasse oder mit einem regulären Array erstellt werden.
Stacks ohne Klasse implementieren:
Beim Ausführen von Stacks-Operationen ohne Stacks-Klasse simulieren wir Stack-Operationen mit einem Array.
Im Folgenden finden Sie ein Beispiel für die Verwendung der Stapeloperationen zum Umkehren eines Zahlenarrays. Ich werde JSON.stringify verwenden, um die Werte des Array-Ergebnisses mit dem Wunsch-Array-Ergebnis zu vergleichen.
Beispiel:
// Reverse an array using stack operations let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array let ordernumberList = []; // array to store the reversed order // Loop through the numberList array to reverse its order for (var i = 0; i < number.length; i++) { let currentValue = numberList.pop(); // using the key .pop method to remove the last element from numberList ordernumberList.push(currentValue); // using the key .push method to push the popped element into ordernumberList } console.log(ordernumberList + " vs " + number); // compare the arrays // Convert both arrays into JSON strings for comparison if (JSON.stringify(ordernumberList) === JSON.stringify(number)) { console.log("The number list is reversed: " + ordernumberList); return ordernumberList; } else { console.log("The number list is not reversed: " + ordernumberList); }
Ich möchte die if-else-Anweisung ganz am Ende hervorheben. Ich habe die Methode JSON.stringify verwendet, um die beiden Arrays zu vergleichen, da der Vergleich ohne sie „false“ zurückgeben und die else-Bedingung auslösen würde, obwohl die Arrays identischen Inhalt haben. Dies liegt daran, dass beim Vergleich von Arrays in JavaScript deren Referenzen (d. h. ihre Speicherorte) und nicht der tatsächliche Inhalt innerhalb der Arrays überprüft werden.
Wie wir in der gesamten For-Schleife sehen können, hat unsere Methode .pop zuerst den letzten Index im Array numberList (LIFO) entfernt (entfernt). Fügen Sie es dann mit der Methode .push dem neuen Array ordernumberList hinzu und kehren Sie das ursprüngliche Array um.
FILO kommt in das neue Array, das so formuliert ist, dass die ersten Indizes, die in das Array „ordernumberList“ verschoben werden, die letzten sein werden, die herauskommen (FILO), wenn sie jemals mit den Stapeloperationen geändert werden.
In diesem Artikel haben wir untersucht, wie Stacks mithilfe der LIFO- und FILO-Prinzipien funktionieren, und Stack-Operationen in JavaScript implementiert. Das Verständnis von Stacks ist für viele Programmieraufgaben unerlässlich, wie sich in realen Szenarien wie dem Surfen im Internet zeigt.
Das obige ist der detaillierte Inhalt vonJS stapelt DS&A-Intro. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!