Javascript : arrays asociativos

[Fuente: http://www.hunlock.com/blogs/Mastering_Javascript_Arrays#quickIDX9]

Javascript no implementa Arrays asociativos

Un array asociativo es un array que utiliza una string en vez de un número como índice para acceder a un elemento concreto del array.

var normalArray    = [];
    normalArray[1] = 'This is an enumerated array';

    alert(normalArray[1]);   // outputs: This is an enumerated array

var associativeArray           = [];
    associativeArray['person'] = 'John Smith';

    alert(associativeArray['person']); // outputs: John Smith

Javascript no tiene, y no soporta Arrays Asociativos. Sin embargo… Todos los arrays en Javascript son objetos y la sintáxis básica de objetos en Javascript simula un array asociativo. Es por ello que el ejemplo anterior funciona. Pero ten en cuenta que aunque lo parezca no es un array propiamente dicho. Es decir el campo ‘person’ pasa a ser una propiedad del objeto ‘associativeArray’ pero los métodos .length(), .sort() y demás métodos de array que implementa javascript no funcionarán.

Podemos hacer un bucle de todas las propiedades del objeto asi:

var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) {
   document.writeln(i+':'+associativeArray[i]+', ');
   // outputs: one:First, two:Second, three:Third
};

En el ejemplo de arriba,  associativeArray.length es cero porque de hecho no pones nada dentro del array, realmente lo añadimos como atributos del objeto associativeArray. Por tanto “associativeArray[0]” sale undefined.

Como un ejemplo final, el código anterior funcionará independientemente de si defines associativeArray como un Array ([]) , un objeto ({}) , una expresion regular (//), una String (“”) , o cualquier otro objeto Javascript.

En resumen — intenta no utilizar arrays asociativos, sino que prográmalos como lo que son — propiedades de los objetos , no Arrays.