Foros del Web » Programando para Internet » Javascript »

como recorrer array con indice irregular?

Estas en el tema de como recorrer array con indice irregular? en el foro de Javascript en Foros del Web. como recorrer array con indice irregular? tengo el siguiente array. myarray[6]=ambar; myarray[1]=celeste; myarray[queso]=rosa; myarray[xx]=rojo; // Esto no me funciona for (i=0;i<myarray.length;i++){ document.write(myarray[i]) } Saludos!...
  #1 (permalink)  
Antiguo 12/10/2011, 06:54
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
como recorrer array con indice irregular?

como recorrer array con indice irregular?

tengo el siguiente array.

myarray[6]=ambar;
myarray[1]=celeste;
myarray[queso]=rosa;
myarray[xx]=rojo;


// Esto no me funciona

for (i=0;i<myarray.length;i++){
document.write(myarray[i])
}

Saludos!
  #2 (permalink)  
Antiguo 12/10/2011, 07:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como recorrer array con indice irregular?

en lugar de usar array puedes usar objetos
Cita:
var obj = {1: 'color', 'xxx': 'color', ....}
edito: el caso es, por qué tienen esos indices??

Última edición por IsaBelM; 12/10/2011 a las 07:26
  #3 (permalink)  
Antiguo 12/10/2011, 07:14
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: como recorrer array con indice irregular?

veo complicado pasar todo a ese formato,

no hay forma de recorrer el array como menciones arriba?

Saludos.
  #4 (permalink)  
Antiguo 12/10/2011, 07:22
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: como recorrer array con indice irregular?

pase los datos desde php.

puedo hacer esto tambien

myarray[0]="6:ambar";
myarray[1]="1:celeste";
myarray[2]="queso:rosa";
myarray[3]="xx:rojo";

Pero necesito usar los dos datos que divide el : como los rescato?

Saludos
  #5 (permalink)  
Antiguo 12/10/2011, 07:25
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como recorrer array con indice irregular?

otra manera de hacerlo con array es con literales
Cita:
var arr =[1= ['color'], 6 = ['color'], ...]
  #6 (permalink)  
Antiguo 12/10/2011, 07:54
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: como recorrer array con indice irregular?

Talvez esto te pueda funcionar:

for (nombre in array) {
var valor = array[nombre];
}

Espero que te sirva.
  #7 (permalink)  
Antiguo 12/10/2011, 07:55
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como recorrer array con indice irregular?

este último es en respuesta a tu último post

entonces usa split()
  #8 (permalink)  
Antiguo 12/10/2011, 07:58
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: como recorrer array con indice irregular?

el for in no me deja rescatar el valor del indice.

voy a probar con el split()

gracias.
  #9 (permalink)  
Antiguo 12/10/2011, 08:01
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: como recorrer array con indice irregular?

Voy a ponertelo más clarito para que lo veas:

Código:
for (indice in array) {
   var valor = array[indice];
}
A ver como la ves ahora?
  #10 (permalink)  
Antiguo 12/10/2011, 08:07
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: como recorrer array con indice irregular?

artificium probe con el for in pero solo me permite usar el valor dentro del array y no el valor que coloque en el indice ya que crea su propio indice.

Saludos!
  #11 (permalink)  
Antiguo 12/10/2011, 08:10
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: como recorrer array con indice irregular?

Cierto, esa función solo funciona bien (valga la redundancia) para objetos.
  #12 (permalink)  
Antiguo 12/10/2011, 08:10
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: como recorrer array con indice irregular?

Cita:
Iniciado por IsaBelM Ver Mensaje
otra manera de hacerlo con array es con literales
Cita:
var arr =[1= ['color'], 6 = ['color'], ...]
¿Y cómo se interpreta ese código?

Cita:
Iniciado por IsaBelM Ver Mensaje
este último es en respuesta a tu último post

entonces usa split()
Lo de usar bien los índices y después parsear el valor no es mala idea, pero al usar un string los números van a desaparecer. O sea:
Cita:
var array = ['1:foo', '3:baz', 'string:bar'];
Al hacer un split el índice se quedará en la posición 0, pero no sabrá si es un número o un key, así que debería hacer un isNaN o algo similar para comprobar que está tratando con número, lo veo engorroso.

Cita:
Iniciado por Artificium Ver Mensaje
Voy a ponertelo más clarito para que lo veas:

Código:
for (indice in array) {
   var valor = array[indice];
}
A ver como la ves ahora.
Los for in no son una buena idea en arrays, son muy lentos. Para eso mejor hacerlo con un objeto, la velocidad viene a ser la misma, pero es más versátil y lógico.

Yo creo que la mejor solución sería olvidarse de los keys y usar sólo índices numéricos, y en cada iteración comprobar si ese elemento del array existe.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #13 (permalink)  
Antiguo 12/10/2011, 08:14
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como recorrer array con indice irregular?

hay varias maneras de crear un ciclo
Cita:
for (con y sin array anidado)
for... in
do ...while
pero todo viene a ser lo "mismo"
  #14 (permalink)  
Antiguo 12/10/2011, 08:15
 
Fecha de Ingreso: enero-2006
Mensajes: 199
Antigüedad: 18 años, 3 meses
Puntos: 5
Respuesta: como recorrer array con indice irregular?

estaba equivocado el FOR IN si me deja tomar los valores de los indices originales.

es lo que estaba buscando

muchas gracias todos!
  #15 (permalink)  
Antiguo 12/10/2011, 08:27
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: como recorrer array con indice irregular?

Gente, no confundamos los tantos.

Los arrays aceptan posiciones NUMERICAS, caso contrario estaremos asignando propiedades como en cualquier otro objeto en JS.

Código Javascript:
Ver original
  1. var myArray = [];
  2.  
  3. myArray[0] = 'a';
  4. myArray['b'] = 'c';
  5.  
  6. // Recorremos el Array
  7. // Muestra un unico item:
  8. // 0 -> a
  9. for(var i = 0; i < myArray.length; i++) {
  10.     console.log(i, '->' , myArray[i]);
  11. }
  12.  
  13. // Recorremos el OBJETO
  14. // Muestra ambos items, el item del array y la property:
  15. // 0 -> a
  16. // b -> c
  17. for(var p in myArray) {    
  18.     console.log(p, '->' , myArray[p]);
  19. }

@piojoso

Lo que estás haciendo es básicamente mal usar los arrays, como te dijo @IsaBelM tenes que usar un objeto (y consecuentemente recorrerlo con for-in).

No es demasiado complicado el tema de colecciones en JS:

Listas -> arrays
Mapas -> objetos
__________________
blog | @aijoona
  #16 (permalink)  
Antiguo 12/10/2011, 12:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: como recorrer array con indice irregular?

Cita:
Iniciado por _cronos2 Ver Mensaje
¿Y cómo se interpreta ese código?
un híbrido entre un array, objeto y un poco de alcohol en sangren

Etiquetas: funcion, 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 16:01.