Arrays sollten nur Einträge haben mit Zifferntasten (Arrays sind auch Objekte, aber Sie sollten wirklich diese nicht mischen).
Wenn Sie ein Array in JSON konvertieren, berücksichtigt der Prozess nur numerische Eigenschaften. Andere Eigenschaften werden einfach ignoriert und deshalb erhalten Sie als Ergebnis ein leeres Array. Vielleicht ist dies noch deutlicher, wenn man die length
des Arrays zu buchen:
> AssocArray.length
0
Was oft als „assoziatives Array“ bezeichnet wird, ist eigentlich nur ein Objekt in JS:
var AssocArray = {}; // <- initialize an object, not an array
AssocArray["a"] = "The letter A"
console.log("a = " + AssocArray["a"]); // "a = The letter A"
JSON.stringify(AssocArray); // "{"a":"The letter A"}"
Eigenschaften von Objekten können Zugriff über Array-Notation oder Punktnotation (wenn der Schlüssel kein reserviertes Schlüsselwort ist). Somit ist AssocArray.a
dasselbe wie AssocArray['a']
.
Inkorrekt; Arrays sind auch Objekte. 'Json.stringify' ignoriert Nicht-Array-Eigenschaften von Arrays. – SLaks
@SLaks: Ich habe nie gesagt, dass Arrays keine Objekte sind;) Ich sage nur, dass man ein Array nicht als assoziatives Array verwenden kann (ok wahrscheinlich könnte man * weil * sie * sind * Objekte, aber ich denke, das wird wirklich hässlich und verwirrend und am Ende bist du verantwortlich für den Zusammenbruch des Universums ...). –
Nur um die Antwort zu klären: Wenn Sie es initialisieren, verwenden Sie '{}' oder 'new Object()', ** NOT ** '[]' oder 'new Array()' – Thymine