Foros del Web » Programando para Internet » Javascript »

arrays asociativos

Estas en el tema de arrays asociativos en el foro de Javascript en Foros del Web. por ahi leí que javascript no soporta arrays asociativos, es verdad esto?...
  #1 (permalink)  
Antiguo 14/04/2007, 22:39
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
arrays asociativos

por ahi leí que javascript no soporta arrays asociativos, es verdad esto?
__________________
Dios es la unica fuente de todo bien.
  #2 (permalink)  
Antiguo 15/04/2007, 01:12
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: arrays asociativos

Hola:

Me parece que los objetos javascript sería el equivalente a los arrays asociativos php...

Los arrays asociativos se indexan por indices que pueden ser no numéricos, y se pueden recorrer con un bucle foreach de php...

Los objetos javascript son prácticamente iguales, ya que esos índices no numéricos podrían compararse con los atributos de los objetos y también se usa una variante del bucle for para recorrerlo (for-in).

Una cosa curiosa, es que realmente los arrays son un tipo de objeto, donde el elemento asociativo es el índice, pero si realizamos el bucle "asociativo" se obtienen todos los ítems del array, pero también el atributo especial de los arrays "length", por lo que debemos tener cuidado especial al usarlo.

También se pueden crear arrays y hacerle asignaciones asociativas:
var x = new Array();
x["saludo"] = "hola";
alert(x["saludo"]);

Pero si no es asociativo, porqué funciona...
Pienso que lo que se estaría haciendo, es crearle a la variable x un nuevo atributo, pero que no tiene nada que ver con el array en sí... si preguntamos por el "length" de este array x la respuesta será "0" o array vacío.

La verdad es que creo que puede ser un buen tema de debate.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/04/2007, 03:56
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Re: arrays asociativos

Secundo la moción, no he trabajado nunca con arrays asociativos y no sabía que podía hacerse en javaScript lo que pones en el ejemplo.
  #4 (permalink)  
Antiguo 15/04/2007, 13:08
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: arrays asociativos

como leía acá
Código:
http://www.hunlock.com/blogs/Mastering_Javascript_Arrays#quickIDX9
dice que, como hizo caricatos, podemos asignar asi un valor como si fuera asociativo pero no nos servirá de mucho ya que esto es "invisible" a javascript, es decir, las propiedades asociadas a los Arrays no los tienen en cuenta para nada. Conclusion, debemos hacer con objetos directamente.

Pero mi pregunta es, como puedo hacer un objeto y ahi mismo en la declaracion, asignarle propiedades con sus respectivos valores? como cuando declaramos una variable que ahi mismo le podemos asignar un valor
Código:
var variable="hola";
__________________
Dios es la unica fuente de todo bien.
  #5 (permalink)  
Antiguo 15/04/2007, 13:24
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Re: arrays asociativos

Cita:
Pero mi pregunta es, como puedo hacer un objeto y ahi mismo en la declaracion, asignarle propiedades con sus respectivos valores? como cuando declaramos una variable que ahi mismo le podemos asignar un valor
Podrías crear los objetos de manera literal, lo que últimamente se conoce como JSON (JavaScript Object Notation):
Código PHP:
<script>
var 
x={saludo:'hola',despedida:'chau',gritar:function(mensaje){alert(mensaje);}}
x.gritar(x.saludo);
x.gritar('arg!');
x.gritar(x.despedida);
</script> 
  #6 (permalink)  
Antiguo 15/04/2007, 17:04
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: arrays asociativos

Cita:
Iniciado por caricatos
si preguntamos por el "length" de este array x la respuesta será "0" o array vacío.
Nunca me había fijado en eso..
Código PHP:
var arr=new Array();
arr["elemento1"]="elememento número uno";
arr["elemento2"]="elememento número dos";
arr["elemento3"]="elememento número tres";
arr[0]="hola";
arr[1]="qué tal";
arr[2]="bien";

for(var 
i in arr) {
    
document.write(i+" --> "+arr[i]+"<br/>");
}
document.write("Su longitud sería --> "+arr.length+"<br/>"); 
Salida (FF2):
Cita:
elemento1 --> elememento número uno
elemento2 --> elememento número dos
elemento3 --> elememento número tres
0 --> hola
1 --> qué tal
2 --> bien
Su longitud sería --> 3
Pero también me parece curiosa la cuestión de que el for(i in arr) no devuelva arr.length también como propiedad (como for(i in document) devuelve todas las propiedades de document ); ya que arr["length"] funciona perfectamente.


Supongo que en un array asociativo deberíamos calcular su length real (si la necesitasemos para algo, que no creo, porque no nos serviría para recorrer el array...).


Opino que los arrays son objetos como cualquier otro. A cualquier objeto le puedes hacer objeto["loQueYoQuiera"]="miValor" y perfectamente lo almacenaría...



A veces el javascript me sigue sorprendiendo...
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 15/04/2007, 22:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: arrays asociativos

Hola:

Sobre navegación del DOM con arrays asociativos, tengo un buen ejemplo en Destripador Web... que estoy pensando retocar para que navegue por arrays como childNodes, scripts, styleSheets, childNodes, etc.

por cierto, un par de objetos muy interesantes para mirar con un bucle asociativo son los arrays "attributes" y "style" de cualquier tag... y algunos navegadores tienen elementos propios bastante curiosos como currentStyle, runtimeStyle y filters en explorer...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 23:32.