En javascript se llama array asociativo a aquellos que en vez de estar organizados con indices numéricos en función de su posición dentro del array, están organizados por claves no numéricas.
Este tipo de arrays pueden ser muy útiles si tenemos listas de objetos que poseen un identificador.
var array_asociativo = new Array();<br />
array_asociativo[‘uno’] = ‘brinkindans’;<br />
array_asociativo[‘dos’] = ‘crusaito’;<br />
array_asociativo[‘tres’] = ‘maiquel yason’;<br />
array_asociativo[‘cuatro’] = ‘robocó’;</p>
<p>alert(array_asociativo(‘tres’)); // –> maiquel yason<br />
Como se puede observar este tipo de arrays se acerca mas al concepto de Map que al de Array.
Esto ocurre porque los arrays en javascript heredan de la clase Object.
El código anterior seria equivalente a este:
var array_asociativo = new Object();<br />
array_asociativo.uno = ‘brinkindans’;<br />
array_asociativo.dos = ‘crusaito’;<br />
array_asociativo.tres = ‘maiquel yason’;<br />
array_asociativo.cuatro = ‘robocó’;</p>
<p>alert(array_asociativo(‘tres’)); //–> maiquel yason<br />
En ambos casos podemos acceder a sus propiedades utilizando la notación de paréntesis o la notación de puntos.
alert(array_asociativo(‘uno’)); //–> brinkindans<br />
alert(array_asociativo.dos); //–> crusaito<br />
El principal problema con estos arrays viene cuando queremos iterar por ellos. Al no estar organizados por indices, no nos vale el típico «for( i=0; i<array .length; i++)»
Deberemos usar un «for in»
for(var i in array_asociativo) {<br />
alert(i); // Nombre de la clave<br />
alert(array_asociativo(i)); // valor<br />
}<br />
Sin embargo al iterar de esta forma no solo se enumeran las propiedades del objeto en cuestión, si no también sus funciones por lo que deberíamos hacer una comprobación de tipos mediante el operando «typeof». Este operando devuelve un String con el tipo del operador sobre el que se ejecuta.
Aquí están los resultado al ejecutar el operador «typeof» sobre cada uno de los tipos de javascript.
typeof new Object() //–> ‘object'<br />
typeof new Array() //–> ‘object’ , ya que los arrays heredan de los objetos<br />
typeof alert //–> ‘function’, ya que alert() es una función<br />
typeof ‘cadena’ //–> ‘string’, ya que ‘cadena’ es un String<br />
typeof 21 //–> ‘number’, ya que es un numero<br />
typeof true //–> ‘boolean'<br />
typeof null //–> ‘object’, null también es considerado como un objeto<br />
typeof undefined //–> ‘undefined'<br />
0 comentarios