matrices sólo deben tener entradas con las teclas numéricas (arrays también son objetos, pero que realmente no se deben mezclar estos).
Si convierte una matriz a JSON, el proceso solo tendrá en cuenta las propiedades numéricas. Otras propiedades simplemente se ignoran y es por eso que obtienes una matriz vacía como resultado. Tal vez esto más evidente si nos fijamos en la length
de la matriz:
> AssocArray.length
0
Lo que se refiere a menudo como "matriz asociativa" es en realidad sólo un objeto en 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"}"
propiedades de los objetos puede acceder a través de la notación de matriz o punto (si la clave no es una palabra clave reservada). Por lo tanto, AssocArray.a
es el mismo que AssocArray['a']
.
Incorrecto; las matrices también son objetos. 'Json.stringify' ignora las propiedades que no son de matriz de las matrices. – SLaks
@SLaks: nunca dije que las matrices no son objetos;) Solo digo que no se puede usar una matriz como una matriz asociativa (bueno, probablemente se podría * porque * ellos * son * objetos, pero creo que esto se pone muy feo y confuso y al final eres responsable del colapso del universo ...). –
Solo para aclarar la respuesta: cuando lo inicialice use '{}' o 'nuevo Objeto()', ** NO ** '[]' o 'nuevo Array()' – Thymine