12 Stimmen

Chrome und wahrscheinlich Opera sortieren Objekteigenschaften automatisch

Das Problem ist: Chrome sortiert automatisch die Eigenschaften eines Objekts.

Wenn ich ein Objekt habe wie:

var obj = {4: "first", 2: "second", 1: "third"};

dann, wenn ich es als nächstes tue:

for(var i in obj) {
    console.debug(obj[i]);
}

Ich sehe weiter:

third second first

aber erwarten:

first second third

18voto

Felix Kling Punkte 751464

Verlassen Sie sich niemals auf die Reihenfolge der Eigenschaften. Sie sind ungeordnet und es gibt keine Spezifikation, die festlegt, in welcher Reihenfolge die Eigenschaften aufgezählt werden sollten.

Chrome ordnet Eigenschaften mit Zifferntasten numerisch an auf, während andere Browser sie in der Einfügereihenfolge auflisten. Dies ist abhängig von der Implementierung.

5voto

lonesomeday Punkte 224087

Sie sollten keine bestimmte Reihenfolge der Schlüssel in for..in Schleifen. Von die MDC-Dokumente :

Eine for...in-Schleife durchläuft die Eigenschaften eines Objekts in beliebiger Reihenfolge

Wenn Sie nach numerischen Schlüsseln ordnen wollen, verwenden Sie ein Array.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X