Wenn ich ein Objekt habe wie:
{ 'a' : 'apple', 'b' : 'banana', 'c' : 'carrot' }
Wenn ich nicht im Voraus weiß, dass die Liste bis auf 'c' geht, abgesehen vom Durchlaufen des Objekts, gibt es eine Möglichkeit, das letzte Element im Objekt zu erhalten (z. B. 'carrot'
)?
javascript
object
Sprugman
quelle
quelle
Antworten:
Nein. Die Reihenfolge ist in JSON und den meisten anderen Schlüsselwertdatenstrukturen nicht garantiert. Daher kann das letzte Element manchmal
carrot
und zu anderen Zeitenbanana
usw. sein. Wenn Sie sich auf die Bestellung verlassen müssen , ist es am besten, sich für Arrays zu entscheiden. Die Kraft von Schlüsselwertdatenstrukturen liegt darin, auf Werte zuzugreifenkeys
, nicht in der Lage zu sein, dasnth
Objekt des Objekts abzurufen.quelle
[]
es sich tatsächlich um ein Objekt. JS hat keine assoziativen Arrays als solche, Arrays haben indizierten Zugriff und Sequenz; Objekte haben assoziativen Eigenschaftszugriff, nicht sequentiell.Ja, es gibt einen Weg mit
Object.keys(obj)
. Es wird auf dieser Seite erklärt :Wenn Sie den Wert des letzten Objekts abrufen möchten, können Sie Folgendes tun:
quelle
Object.keys
funktioniert großartig. Ich muss nur einen Weg finden, damit es auf IE8 und 7 funktioniert, da dies nur auf IE9 angezeigt wurde.Object.keys
nur um herauszufinden, dass die Eigenschaften tatsächlich zufällig angeordnet wurden. Die tatsächliche Eigenschaftsreihenfolge unterscheidet sich von der Reihenfolge, die angezeigt wird, wenn Sie an der Browserkonsole angemeldet sind. Bei der Anmeldung an der Browserkonsole werden die Eigenschaften automatisch neu angeordnet und alphabetisch / numerisch angezeigt, was definitiv zu Verwirrung führt.wo obj ist dein Objekt
quelle
'c'
in diesem Fall), aber die Frage ist so formuliert, dass der Fragesteller nach dem letzten Wert sucht ('carrot'
). Dies fügt auch nicht wirklich etwas hinzu, das nicht bereits von Kristina Stefanovas AntwortQuelle: http://javascriptweblog.wordpress.com
quelle
for (firstProperty in myObj) { break; };
Lösung unter Verwendung der Destrukturierungszuweisungssyntax von ES6:
quelle
Was die Reihenfolge der Objekteigenschaften in Javascript betrifft, werde ich nur auf diese Antwort verweisen:
Reihenfolge der Elemente in einer "for (… in…)" - Schleife
Speziell:
Damit jede andere Antwort hier richtig ist, gibt es keine offiziell garantierte Reihenfolge, um Eigenschaften zu beanstanden. In der Praxis gibt es jedoch (abgesehen von Fehlern, die natürlich sogar in Stein gemeißeltes, offiziell festgelegtes Verhalten vermasseln können).
Darüber hinaus wird die De-facto-Aufzählungsreihenfolge der Objekteigenschaften wahrscheinlich in zukünftigen EMCAScript-Spezifikationen kodifiziert.
Zu diesem Zeitpunkt würde ich jedoch keinen Code dafür schreiben, hauptsächlich, weil es keine integrierten Tools gibt, die bei der Reihenfolge der Objekteigenschaften helfen. Sie könnten Ihre eigenen schreiben, aber am Ende würden Sie immer jede Eigenschaft in einem Objekt durchlaufen, um ihre Position zu bestimmen.
Daher lautet die Antwort auf Ihre Frage " Nein" . Es gibt keine andere Möglichkeit, als ein Objekt zu durchlaufen.
quelle
Verwenden Sie ein Array, kein Objektliteral, wenn die Reihenfolge wichtig ist.
Oder so ähnlich
Oder auch..
Es
dict
wird nicht garantiert, dass die Schlüssel für in Ordnung sind.quelle
Sie können dies versuchen. Dadurch wird der letzte Artikel gespeichert. Hier muss obj in Array konvertieren. Verwenden Sie dann die Array-
pop()
Funktion, die das letzte Element aus dem konvertierten Array zurückgibt.quelle
Die anderen Antworten machen es mir zu kompliziert.
quelle
quelle
Sie können auch die folgende
Object.values()
Methode verwenden:quelle
Objekt in JavaScript zuordnen . Das ist jetzt schon ungefähr 3 Jahre alt. Diese Kartendatenstruktur behält die Reihenfolge bei, in der Elemente eingefügt werden. Wenn Sie das letzte Element abrufen, wird das neueste Element in die Karte eingefügt
quelle
Lass
obj
dein Objekt sein. Exec:quelle
Wenn Sie meinen, den letzten Schlüssel alphabetisch zu erhalten, können Sie (garantiert):
quelle