Ja da ist. Nicht innerhalb des ECMAScript-Standards, aber über Browser und Node.js hinweg unterstützt und anscheinend stabil. Siehe https://stackoverflow.com/a/23202095/645715 .
BEARBEITEN : Dies gibt ein Objekt zurück, in dem die Schlüssel angeordnet sind. Sie können verwenden Object.keys(...), um die bestellten Schlüssel vom Objekt abzurufen.
Warum sollten Sie sich um die Reihenfolge der Objektschlüssel kümmern? Der Unterschied kann in einigen Anwendungen von Bedeutung sein, z. B. beim Parsen von XML mit xml2js, das XML als verschachtelte Objekte darstellt und XML-Tags als Hash-Schlüssel verwendet.
Es gibt ein paar Anmerkungen:
- Schlüssel, die wie Ganzzahlen aussehen, werden zuerst und in numerischer Reihenfolge angezeigt.
- Tasten, die wie Zeichenfolgen aussehen, werden als Nächstes und in der Einfügereihenfolge angezeigt.
- Diese Bestellung wird von gemeldet
Object.keys(obj)
- Die von gemeldete Reihenfolge
for (var key in obj) {...}kann in Safari, Firefox abweichen
Die Funktion gibt ein Objekt mit sortierten Schlüsseln zurück, die in alphabetischer Reihenfolge eingefügt sind:
function orderKeys(obj, expected) {
var keys = Object.keys(obj).sort(function keyOrder(k1, k2) {
if (k1 < k2) return -1;
else if (k1 > k2) return +1;
else return 0;
});
var i, after = {};
for (i = 0; i < keys.length; i++) {
after[keys[i]] = obj[keys[i]];
delete obj[keys[i]];
}
for (i = 0; i < keys.length; i++) {
obj[keys[i]] = after[keys[i]];
}
return obj;
}
Hier ist ein kurzer Test:
var example = {
"3": "charlie",
"p:style": "c",
"berries": "e",
"p:nvSpPr": "a",
"p:txBody": "d",
"apples": "e",
"5": "eagle",
"p:spPr": "b"
}
var obj = orderKeys(example);
dies kehrt zurück
{ '3': 'charlie',
'5': 'eagle',
apples: 'e',
berries: 'e',
'p:nvSpPr': 'a',
'p:spPr': 'b',
'p:style': 'c',
'p:txBody': 'd' }
Sie können dann die bestellten Schlüssel erhalten als:
Object.keys(obj)
Welches kehrt zurück
["3", "5", "apples", "berries", "p:nvSpPr", "p:spPr", "p:style", "p:txBody"]