-1
Ich habe ein Javascript-Objekt, das ich Daten basierend auf 1 gemeinsamen Kategorie durchqueren und drucken möchte.Looping Javascript-Objekt, um Daten zu drucken
Javascript-Objekt:
var $states = {
"AL" : {
"longname": "Alabama",
"lawOne": "Alabama Law 1",
"lawTwo": "Alabama Law 2",
"lawThree": "Alabama Law 3",
"region" : "Southeast"
},
"AK" : {
"longname": "Alaska",
"lawOne": "Alaska Law 1",
"lawTwo": "Alaska Law 2",
"lawThree": "Alaska Law 3",
"region" : "Northwest"
},
"AZ" : {
"longname": "Arizona",
"lawOne": "Arizona Law 1",
"lawTwo": "Arizona Law 2",
"lawThree": "Arizona Law 3",
"region" : "Southwest"
},
etc...
}
Ich bin in der Lage, die Anordnung zu Schleife und erhalten so granular wie die Konsole bekommen alle Staaten zu protokollieren, die sich in der Region sind:
for (var key in $states) {
if ($states.hasOwnProperty(key)) {
var $getStateRegion = $states[key].region
if ($getStateRegion === "Northeast") {
console.log ($states[key].longname);
}
}
}
Einmal Ich versuche, diese zu durchlaufen und eine Tabelle mit diesen Daten auszudrucken, wo ich auf ein Problem stoße. Ich möchte in der Lage sein, die LongName, LawOne, LawTwo und LawThree Werte einzugeben. Was gibt? Sobald ich versuche, eine For-Schleife zu durchlaufen, stoße ich auf eine Straßensperre. Danke im Voraus!
Was ist das Problem? –
Ihr Code funktioniert gut, aber Sie sind, wenn Segment falsch. ändern ** Nordosten ** in ** Nordwesten ** – HoangHieu
@BeingSunny das Problem ist, dass derzeit eine Liste aller Langnamen des Staates protokolliert. Das Ziel ist es, die Zustände in dieser Region zu durchlaufen und ihre Gesetze in verschiedenen
Antwort
Versuchen Sie den Arbeitscode unten.
Quelle
2017-02-21 17:19:15
Sie auf dem richtigen Weg sind. Bevor ich fortfahre, möchte ich darauf hinweisen, dass Sie eine for..in-Schleife verwenden, aber neuere Versionen von Javascript unterstützen auch die for..of-Schleife, also sollten Sie dies in Betracht ziehen. Der Unterschied ist, dass die for..in-Schleife Ihnen die Schlüssel des Objekts gibt, und die for..of-Schleife gibt Ihnen die Werte, also verkürzt es den Code, indem er den Schritt überspringt, in dem Sie etwas schreiben mit dem Effekt:
Das Geheimnis Ihrer Lösung liegt darin, wie Sie mit dem DOM umgehen, und es gibt viele Möglichkeiten, dies zu tun. Ich werde dir eins zeigen, aber es ist nicht unbedingt das schnellste oder das beste. Ich empfehle, mit verschiedenen DOM-Manipulationen herumzuspielen, um diejenige zu finden, die am besten zu dir passt.
Erstens wissen wir, wie eine Aufzeichnung zu erhalten, so dass die Javascript Aspekt Looping, Sie haben das behandelt ...
Als nächstes müssen wir die Tabelle erstellen .... Ich gehe davon aus, dass Sie wollen vier Spalten basierend auf Ihrer Beschreibung, aber Sie könnten dies leicht anpassen, um den Namen des Staates und ein Gesetz auf jeder Zeile, die wahrscheinlich ein besseres Design wäre, eine variable Anzahl von Gesetzen zu setzen.
würde der HTML-Code wie folgt aussehen:
Ihre Schleife, indem Sie mehrere Zeilen zu diesem html hinzufügen dann müssten die als erscheinen:
Wir String-Manipulation von verwenden das DOM, weil es ein guter Anfang ist, weil es dem ähnlich ist, was Sie von Hand schreiben würden.
Wir werden die Tabelle in drei Teile aufteilen: den Kopf, den Körper und die Fußzeile.
nun auf der Schleife, werden wir jede Zeile erstellen, wie es für den Körper benötigt, und fügen:
Nachdem wir den Körper, durch die Kombination der Header machen können wir unseren Tisch, Körper und Fußzeile:
und dann finden wir einen Ort, um es in unserem Dokument zu injizieren:
Hier ein anschauliches Beispiel ist:
HINWEIS: der Live-Code betrifft, ist die HTML größer als die Display-Box. In meinem Browser muss ich nach dem Snippit-HTML scrollen, um die generierte Tabelle anzuzeigen. Entweder das oder erweitern Sie das Snippit-Fenster zu einem vollständigen Tab, um es auf einem größeren Bildschirm anzuzeigen.
Der obige Code ist vereinfacht, und die meisten Programmierer würden Ihnen sagen, HTMLElement.innerHTML nicht zu verwenden, weil es langsam ist, aber es ist ein guter Anfang. Sobald Sie dies nicht mehr beherrschen, beginnen Sie mit document.create (tagName) zu üben und verwenden Sie dann mehr direkte DOM-Manipulationen.
Quelle
2017-02-21 18:00:14
Sehr ausführlich und nützliche Antwort! Vielen Dank! Nur ein paar Dinge. Wenn ich dies in JSBin oder Codepen lade, bringt die Button-Funktion eine Tabelle und dann verschwindet sie. Ich wollte damit in einer Sandbox-ähnlichen Atmosphäre spielen, in der ich mich ein wenig mit dem DOM anlegen konnte. Das Problem hierbei ist, dass die Daten nicht auf einem gemeinsamen Datenpunkt basieren. Nehmen wir an, Sie würden "NJ" in das Eingabefeld eingeben. Das gewünschte Ergebnis würde eine Tabelle mit allen Nordosten Staaten und diesen Gesetzen zeigen. –
Um mit dem Code zu spielen, den ich Ihnen gegeben habe, können Sie einen kleinen "Hack" verwenden, um den Code in einen Stack Overflow-Snippet-Editor zu kopieren. Klicken Sie auf "Schnipsel kopieren, um zu antworten". Dadurch wird mein Code in eine neue Antwort auf Ihre Frage repliziert. Dann schaue dir den Link an und klicke auf den Link "den obigen Snippit bearbeiten". Dadurch erhalten Sie eine Entwicklungsumgebung, in der Sie mit Javascript, CSS und HTML frei spielen können. Wenn Sie fertig sind, kopieren Sie das in Ihre eigene IDE und fügen Sie es ein, und löschen Sie die Entwurfsantwort, die Sie erstellt haben, indem Sie die Seite verlassen, ohne zu buchen. –
Um den Code an Ihre eigenen Bedürfnisse anzupassen, müssen Sie definieren, wie Ihre Tabelle aussehen wird, und den Loop ändern, um Ihre Anforderungen zu erfüllen. Da Sie Ihre gewünschten Daten auf der Konsole ausgeben können, gehe ich davon aus, dass Sie den Looping-Part beherrschen. Wenn Sie Hilfe beim Schreiben dieser Schleifen benötigen, senden Sie mir das zu verwendende Tabellenlayout und beschreiben Sie die verschiedenen Möglichkeiten, wie die Tabellen gefiltert werden sollen, und ich helfe Ihnen, den Code zu erstellen. –
Verwandte Themen