lade das letzte Element eines json-Objekts in Javascript

8

Ich habe ein Json-Objekt in Javascript wie
var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};
ohne den Namen des letzten Schlüssels zu kennen. (Die Schlüssel sind in aufsteigender Reihenfolge)

Wie kann ich den Wert (und den Schlüssel) des letzten Elements lesen?

    
Finwood 03.01.2013, 22:09
quelle

5 Antworten

14
%Vor%

Object.keys (ES5, shimmable) gibt ein Array der Objektschlüssel zurück. Wir sortieren sie dann und greifen nach dem Letzten.

Sie können die Reihenfolge in einer for..in -Schleife nicht sicherstellen, daher können wir uns nicht vollständig darauf verlassen. Aber wie Sie sagten, sind die Schlüssel in aufsteigender Reihenfolge, wir können sie einfach sortieren.

    
Zirak 03.01.2013, 22:14
quelle
4

Versuchen Sie Folgendes:

%Vor%     
Danilo Valente 03.01.2013 22:11
quelle
1

Wenn Sie alte JS-Engines nicht unterstützen müssen:

%Vor%

Gehen Sie nicht davon aus, dass die Schlüssel in Ordnung sind. Nimm die Schlüssel, sortiere sie und nimm den größten Wert nach der Sortierung.

    
Alex Wayne 03.01.2013 22:14
quelle
1

Objektschlüssel sind in der Regel ungeordnet, aber wenn Sie sich den verwendeten Schlüsselsatz ansehen, habe ich angenommen, dass Sie nach dem höchsten Datum in den json-Schlüsseln suchen:

%Vor%     
Roonaan 03.01.2013 22:16
quelle
1

ECMCA-Skriptspezifikationen (JavaScript-Spezifikationen) erfordern nicht, dass Browser die Reihenfolge der Eigenschaften eines Objekts beibehalten.

Bezieht sich auf das, was die ECMCA 5 Spezifikationen sagen:

  

"Die Mechanik und Reihenfolge der Aufzählung der Eigenschaften (Schritt 6.a in   der erste Algorithmus, Schritt 7.a in der zweiten) ist nicht spezifiziert. "

Bezieht sich auf die Methode Object.keys:

  

"Wenn eine Implementierung eine bestimmte Aufzählungsreihenfolge für die   for-in-Anweisung muss dieselbe Aufzählungsreihenfolge in Schritt 5 verwendet werden   von diesem Algorithmus. "

Es macht keinen Sinn zu sagen, die letzte definierte Eigenschaft zu bekommen. Sie können die Eigenschaften basierend auf dem Namen sortieren und den letzten erhalten, aber wenn Sie Ordnung haben wollen, dann behalten Sie ein Array bei.

    
Nick Bray 03.01.2013 22:27
quelle

Tags und Links