Etwas an der Spitze eines JSON-Objekts hinzufügen

7

Ich habe ein JSON-Objekt, das beim Laden der Seite aufgerufen wird:

%Vor%

Gibt es eine Möglichkeit, ein Element vor dem ersten foo -Element zu injizieren, so dass bei der Ausführung von for var i in data das neue Element vor den Elementen, die beim Initiieren des Objekts hinzugefügt wurden, durchlaufen wird?

Der Grund ist, dass ich dem Benutzer einige Objekte zeige. Wenn der Benutzer ein neues Element über Javascript hinzufügt, möchte ich, dass dieses neue Element über allen vorhandenen Elementen angezeigt wird, wenn ich jedoch das neue Element hinzufüge, z. B.

%Vor%

Dann sieht das JSON-Objekt folgendermaßen aus:

%Vor%

Anstatt wie ich will, was ist:

%Vor%

Irgendwelche Ideen?

    
Click Upvote 27.05.2012, 11:58
quelle

6 Antworten

13

In JS ist die Reihenfolge der Objekteigenschaften nicht garantiert. Selbst wenn sie in der JSON-Zeichenfolge angeordnet sind, werden Sie bei der Analyse als JS-Objekt niemals vorhersagen, in welcher Reihenfolge sie auftauchen.

Verwenden Sie stattdessen besser Arrays. Sie können die Methode unshift() verwenden, um das Element in den ersten Index zu übernehmen.

%Vor%     
Joseph 27.05.2012, 12:03
quelle
8

Als Kompliment an Joseph der Träumer ist antwort , ich habe ein paar schnelle checks in firefox & amp; Chrom.

Firefox:

%Vor%

Chrome:

%Vor%     
user405398 27.05.2012 12:12
quelle
3
  

Gibt es eine Möglichkeit, ein Element vor dem ersten foo-Element zu injizieren?

Was zuerst im Array ankommt:

window.object oder window.alert?

Weder Objekte haben noch eine Reihenfolge. Wenn Sie ein Array verwenden möchten, verwenden Sie ein Array. Objekte sind keine Arrays.

Wenn Sie möchten

%Vor%

Verwenden Sie ein Array.

Wenn Sie möchten:

%Vor%

Verwenden Sie ein Objekt.

    
Incognito 27.05.2012 12:07
quelle
2

Ich bin darüber gestolpert und habe es erreicht mit:

const newObject = Object.assign({first: value}, oldObject)

Wie bereits erwähnt, ist die Bestellung nicht garantiert, aber für mich ist das gut genug. :)

    
raubas 21.02.2017 16:51
quelle
0

Anstatt einen neuen Wert im selben Objekt hinzuzufügen, können Sie ein neues Objekt erstellen und die Reihenfolge der Eigenschaften wie gewünscht anordnen. Beispiel:

%Vor%

So erstellen Sie ein neues Objekt mit der neuen Eigenschaft, die Sie oben wollen:

%Vor%

und der Lauf:

%Vor%     
virender nehra 11.09.2017 06:34
quelle
-3

Ich denke, Sie können es in eine Zeichenkette umwandeln, fügen Sie Ihre Daten am Anfang der Zeichenkette an und wandeln Sie die Zeichenkette dann mit "eval"

in json um     
Samir Adel 27.05.2012 12:05
quelle

Tags und Links