Tach!
Diese Struktur ist auch nicht viel besser. Ob man nun statt numerischen Schlüsseln benannte hat, macht das Kraut am Ende nicht fett.
Doch. Das Entscheidende bezüglich abstrakter Datentype nämlich ist der wahlfreie Zugriff! Während ein Array stets komplett durchlaufen werden muss, hat man mit
{key:value}
den value sofort im Griff!Das sehe ich in dem Fall nicht als das entscheidende Kriterium an.
Ist es aber. Weil: Übertragen wird ja nicht der Index eines Array sonder übertragen wird der Schlüssel und zwar namentlich!
Es ging nicht darum, dass der Schlüssel weg wäre, was er in der ursprünglichen Struktur ja nicht ist, sondern um einen von dir geforderten wahlfreien Zugriff. Für diesen wahlfreien Zugriff ist es nicht erforderlich, dass die Struktur ihn selbst begünstigt. Über Methoden zugreifen, reicht auch.
Natürlich ist das kein generelles Problem. Es geht hier aber nicht darum eine angeblich universelle Datenstruktur zu erstellen, sondern eine für einen bestimmten Einsatzzweck.
Es geht um einen Ersatz von jQuery.serialize. Und da ist FormData völlig fehl am Platze weil es weder
1. eine Datenstruktur für den Default Enctype lliefert 2. noch den Enctype selbst serialisiert
Du springst im Thema beliebig hin und her. Erst gefällt dir die Struktur nicht, nun springst du wieder zurück zum Anfang, und bringst Argumente, die schon längst geklärt sind.
..anstatt eine universelle Struktur schaffen zu wollen, die sich anderweitig als nachteilig erweisen kann.
In Hinblick möglicher Erweiterungen auf Enctypes wie
application/json
oderapplication/xml
ist ein Zwischenschritt über eine universelle Datenstruktur auf jeden Fall sinnvoll.
Bei einer Struktur, die die Aufgabenstellung nicht erfüllt (Reihenfolge beibehalten), braucht man nicht weiter über den Sinn nachzudenken. (Es sei denn, sie kann andere Aufgabenstellungen untserstützen, nur nützt das ja nichts für die vorliegende.)
Deine Vorschläge lösen alle nicht die Vorgabe, die ursprüngliche Reihenfolge beizubehalten. Wenn du die in deinem Fall nicht brauchst, gibt es immer noch die Methoden get und getAll, um über den Key zuzugreifen.
Das kann man auch mit Methoden die das DOM bietet.
Dann brauchst du gleich gar keine Datenstruktur, wenn alles übers DOM geht.
dedlfix.