Foros del Web » Programando para Internet » Javascript »

Problema con indice Array en JavaScript

Estas en el tema de Problema con indice Array en JavaScript en el foro de Javascript en Foros del Web. Hola a todos, tengo un problema con este array, cuando intento imprimir los valores de los indices me aparece indefinido, ¿alguien sabe por que?, muchas ...
  #1 (permalink)  
Antiguo 14/01/2013, 16:20
 
Fecha de Ingreso: enero-2013
Ubicación: madrid
Mensajes: 4
Antigüedad: 11 años, 11 meses
Puntos: 0
Problema con indice Array en JavaScript

Hola a todos, tengo un problema con este array, cuando intento imprimir los valores de los indices me aparece indefinido, ¿alguien sabe por que?, muchas gracias

var mat = new Array();
mat["cero"]= new Array(1,2,3);
mat["uno"]= new Array(1,2,3);
mat["dos"]= new Array(1,2,3);
mat["tres"]= new Array(1,2,3);
for (var elem in mat)
{
document.write(mat["key"], mat[elem]+"<br>");
}
  #2 (permalink)  
Antiguo 14/01/2013, 16:53
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años, 7 meses
Puntos: 343
Respuesta: Problema con indice Array en JavaScript

Esto esta mal a muchos niveles.

En JavaScript los arrays no cumplen el rol que tienen en PHP (donde hacen de arrays y mapas (o arrays asociativos) ). En este ejemplo estás usando mat como un mapa, es decir, le estás asignando propiedades al objeto y no elementos al array.

Segundo, <voz autorizada>no uses nunca*, pero nunca** la expresión new Array</voz autorizada>.

* NUNCA
** A menos que sepas muy bien lo que haces.

Tercero, nunca uses for/in para recorrer arrays (si objetos).

Cuarto, en tu ejemplo, que hace mat['key'] es un misterio de la naturaleza.

Suponiendo que lo que queres es mostrar todos los elementos de los arrays:

Código Javascript:
Ver original
  1. var mat = {}; // evitamos el new Object
  2.  
  3. mat["cero"] = [1, 2, 3]; // evitamos el new Array
  4. mat["uno"] = [1, 2, 3]; // evitamos el new Array
  5. mat["dos"] = [1, 2, 3]; // evitamos el new Array
  6. mat["tres"] = [1, 2, 3]; // evitamos el new Array
  7.  
  8. var result = '';
  9.  
  10. for (var elem in mat) { // en JS se suele estilar usar las llaves arriba
  11.  
  12.         result += '<h1>' + elem + '</h1>';
  13.        
  14.         for(var i = 0, l = mat[elem].length; i < l; i++) {         
  15.             result += '<h2>' + mat[elem][i] + '</h2>';
  16.         }
  17.    
  18. }
  19.  
  20. document.write(result);
__________________
blog | @aijoona

Etiquetas: indice
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:01.