Ist eine JavaScript-Array-Reihenfolge garantiert?

Lesezeit: 2 Minuten

Benutzeravatar von Rafael Herscovici
Rafael Herscovici

Angenommen, ein JavaScript-Array wird in einem Formular (mit Ajax/JQuery) veröffentlicht, ist die Reihenfolge im Array garantiert?

Gültige Frage von @Quentin „Definiere ‚in einem Formular gepostet‘“

$.ajax({
  type: "POST",
  url: url,
  data: { foo: [{ name: "one" }, { name: "two" }] },
  success: success,
  dataType: dataType
});

Erweitern Sie die Frage (aufgrund des oben Gesagten): Bewahrt das Array garantiert die Reihenfolge auf der Serverseite?

  • Arrays sind geordnete Sammlungen.

    – MinusVier

    22. Januar 2016 um 20:55 Uhr

  • Ich bin auf Situationen gestoßen, in denen die Reihenfolge nicht beibehalten wurde (in anderen Sprachen), daher die Frage.

    – Rafael Herscovici

    22. Januar 2016 um 20:56 Uhr

  • Welche Sprachen und wie kann man das reproduzieren?

    – Sebastian Simon

    22. Januar 2016 um 20:58 Uhr

  • meine Meinung: Das “Vertrauensproblem” bei diesem Blogbeitrag ist eine Person, die Arrays nicht versteht.

    – escarello

    22. Januar 2016 um 21:03 Uhr

  • Wenn Arrays keine garantierte Reihenfolge hätten, hätten wir ein Problem. Objektschlüssel hingegen haben keine garantierte Reihenfolge.

    – escarello

    22. Januar 2016 um 21:06 Uhr


Benutzeravatar von Nicola Bizzoca
Nicola Bizzoca

Im Zweifelsfall können Sie sich immer auf den ECMAScript-Standard beziehen: Ordnen Sie exotische Objekte an

Array ist eine spezielle Art von Objekt in der Sprache, die eine zusätzliche Semantik darüber hat, wie die Längeneigenschaft in Bezug auf die Eigenschaften behandelt wird, die Ganzzahlen von 0 bis 2^32 sind. In Javascript kann ein Array spärlich sein, wenn Werte im Bereich von 0 bis zur ausgeschlossenen Längeneigenschaft fehlen. Dies berücksichtigen beispielsweise verschiedene Array-Verfahren für jeden fehlende Werte ignorieren

Was ist ein fehlender Wert?

Die Sprache versucht, Arrays so weit wie möglich wie normale Objekte zu verhalten: Sie können ihr jede Eigenschaft hinzufügen und sogar Objekte haben, die von einem Array erben.

var fruits = ["Apple", "Banana"];
fruits.preferred = "Apple";

Diese Art von Code stellt kein Problem dar, aber wenn Sie anfangen zu schreiben:

fruits[100] = "Strawberry";
for(let i = 0; i < fruits.length; ++i) {
...
}

100 ist ein Eigenschaftsname im Bereich von [0, 2^32) so is an array element but at this point what fruits.length should be? It must be 101, otherwise the for loop will never get “Strawberry”.

But at this point you have to accept that there is a range of element [2, 99] die nie definiert wurden: das sind fehlende Werte.

Umgekehrt muss dasselbe gelten, wenn Sie die Längeneigenschaft ändern

var fruits = ["Apple", "Banana"];
fruits.length = 0;

Jetzt wird eine for-Schleife niemals ein Element des Arrays erhalten: Dies entspricht dem Leeren des Arrays fruit.

Es ist auch möglich, die Länge zu erhöhen, was zu fehlenden Werten führt

Ja, Arrays sind also geordnet, da Sie alle ihre Elemente in aufsteigender Reihenfolge iterieren können, aber denken Sie daran, dass Werte fehlen können

  • Kannst du weiter ausbauen Missing Values ?

    – Rafael Herscovici

    22. Januar 2016 um 21:27 Uhr

  • Danke, dies ähnelt dem Blogbeitrag, mit dem ich kommentiert habe, aber ich bin mir ziemlich sicher, dass andere dies hilfreich finden werden.

    – Rafael Herscovici

    22. Januar 2016 um 22:24 Uhr

  • Tut forEach in aufsteigender Reihenfolge wiederholen?

    – Nathan Goings

    5. November 2018 um 23:56 Uhr

1430880cookie-checkIst eine JavaScript-Array-Reihenfolge garantiert?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy