5 Stimmen

Wie kann man den JavaScript-Objekt-Eigenschaftsnamen dynamisch ersetzen?

Ich habe ein JavaScript-Objekt erstellt wie

var obj={}
var prop = {}
prop.name= "name",
prop.value = "10"
obj[old_name] = prop;

Ich muss den old_name in new_name ändern. Ich habe es versucht

obj[new_name] = obj[old_name];
delete obj[old_name];

Und das funktioniert, aber die Reihenfolge des Objekts ändert sich.

Zum Beispiel:

{"obj1":{"name:name","value:10"},"obj2":{"name:name","value:10"}}

Wenn ich obj1 durch objone ersetze, wie folgt:

obj[objone ] = obj[obj1];
delete obj[obj1 ];

Die Reihenfolge des Objekts änderte sich zu:

{"obj2":{"name:name","value:10"},"objone":{"name:name","value:10"}}]

Aber ich muss nur den Eigenschaftsnamen ändern und nicht die Reihenfolge, ich habe auch versucht, eine Zeichenfolge zu ersetzen, aber ich glaube, das ist nicht der richtige Weg, also bitte schlagen Sie mir einige Ideen vor.

5voto

T.J. Crowder Punkte 948310

Objekte haben keine Reihenfolge. Jede scheinbare Reihenfolge, die Sie sehen, ist nicht festgelegtes Verhalten, auf das Sie sich nicht verlassen können. Als die Frage gestellt wurde, hatten sie es nicht, aber jetzt tun sie es:

  1. Lassen Sie keys eine neue leere Liste sein.
  2. Für jeden eigenen Eigenschaftsschlüssel P von O, der ein ganzer Zahlenindex ist, in aufsteigender numerischer Indexreihenfolge
    • Fügen Sie P als letztes Element von keys hinzu.
  3. Für jeden eigenen Eigenschaftsschlüssel P von O, der ein String ist, aber kein ganzer Zahlenindex ist, in der Reihenfolge der Eigenerstellung
    • Fügen Sie P als letztes Element von keys hinzu.
  4. Für jeden eigenen Eigenschaftsschlüssel P von O, der ein Symbol ist, in der Reihenfolge der Eigenerstellung
    • Fügen Sie P als letztes Element von keys hinzu.
  5. Gib keys zurück.

Ihre Art der Umbenennung der Eigenschaft ist die einzige Möglichkeit, es zu tun: Eine neue erstellen und dann die alte entfernen. Dadurch wird sich die Position ändern, an der sie in der Objektreihenfolge erscheint, weil sie nach der vorherigen Eigenschaft erstellt wurde.

Wenn Sie eine Reihenfolge benötigen, verwenden Sie ein Array. Obwohl theoretisch Arrays ebenfalls keine Reihenfolge haben (weil sie keine echten Arrays sind), haben wir die Konvention, dass sie eine Reihenfolge haben, basierend auf dem numerischen Wert der Indizes der Einträge: Der Eintrag am Index 0 liegt vor dem Eintrag am Index 1 und so weiter. (Und moderne JavaScript-Engines können und verwenden bei Bedarf echte Arrays.)

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