Les tableaux ne doivent avoir des entrées avec les touches numériques (tableaux sont aussi des objets, mais vous devriez vraiment pas mélanger ces).
Si vous convertissez un tableau en JSON, le processus prendra uniquement en compte les propriétés numériques. Les autres propriétés sont simplement ignorées et c'est pourquoi vous obtenez un tableau vide comme résultat. Peut-être cela plus évident si vous regardez le length
du tableau:
> AssocArray.length
0
Ce qui est souvent appelé « tableau associatif » est en fait un objet 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"}"
Les propriétés des objets peuvent être accessible via la notation matricielle ou la notation par points (si la clé n'est pas un mot-clé réservé). Ainsi, AssocArray.a
est identique à AssocArray['a']
.
Incorrect; les tableaux sont aussi des objets. 'Json.stringify' ignore les propriétés non-array des tableaux. – SLaks
@SLaks: Je n'ai jamais dit que les tableaux ne sont pas des objets;) Je dis simplement qu'on ne peut pas utiliser un tableau comme tableau associatif (ok on pourrait le * parce qu'ils * sont * des objets, mais je pense confus et à la fin vous êtes responsable de l'effondrement de l'univers ...). –
Juste pour clarifier la réponse: quand vous l'utilisez, utilisez {{} 'ou' new Object() ', ** NOT **' [] 'ou' new Array() ' – Thymine