Foros del Web » Programando para Internet » Javascript »

Problemas con arrays

Estas en el tema de Problemas con arrays en el foro de Javascript en Foros del Web. Hola se que talves mi problema sea sencillo, pero no encuentro la solución: lo q necesito es comparar 2 array con distintas dimensiones y obtener ...
  #1 (permalink)  
Antiguo 14/07/2009, 11:24
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Problemas con arrays

Hola se que talves mi problema sea sencillo, pero no encuentro la solución:
lo q necesito es comparar 2 array con distintas dimensiones y obtener los elementos que son distintos, es decir, por ejemplo:
tengo los sgtes. arrays:
array1=[1,2,3,4,5];
array2=[1,2,4];
como hago para obtener los elementos q tengo en el array1 y que no estan en el array 2, es decir 3 y 5.

los estaba haciendo con for anidados, recorriendo el mas grande y dentro de esto recorria el el mas chiquito, pero no sale lo q quiero.Se que no parece tan complicado, pero no doy con la rpta.
  #2 (permalink)  
Antiguo 14/07/2009, 12:05
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemas con arrays

Pues una forma arcaica de hacerlo es comparar el primer elemento de array1 con todo array2, el segundo elemento de array1 con todo array2, asi sucesivamente... y en el momento que sea distinto, pues hacer lo que quieras con el dato, como por ejemplo meterlo en otro array (array3).

Seguramente exista otra forma mas compleja y tambien mas rapida de conseguir lo mismo, pero es lo que se me ocurre ahora.
  #3 (permalink)  
Antiguo 14/07/2009, 12:18
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con arrays

Hola Gracias por responde, eso habia hecho, mira:
Cita:
for(var k=0;k<menus;k++){
for(var j=0;j<num;j++){
if( valores.split(",")[j] != valores3.split(",")[k] ){
// delete valores3.split(",")[k];
cadena[k]=valores3.split(",")[k];
// break;
}
}
}
pero no me bota lo que quiero, me puse a ver el codigo y pues me di cuenta que:
array1=[1,2,3,4,5];
array2=[1,2,4];
en la primera iteracion va a comparar: array2[1] con array1[1] y estos son =es, pero en la segunda iteracion va a comparar array2[1] con array1[2], estos son diferentes entonces me va aguardar el valor del array1[2], que tiene el valor "2" , y ese valor no quiero, como dije antes los valores que me interesan son los q estan en el array1 y no estan en el 2, en este caso 3 y 5. Ayuda por favor
  #4 (permalink)  
Antiguo 14/07/2009, 12:27
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemas con arrays

Claro, pero eso se soluciona con un continue en el bucle, es decir que cuando compares array1[0] con array2[0] (que son iguales), ya sabes que el elemento "0" del array1 esta en array2, por lo que ahora pasas a comparar con array1[1], si lo encuentra, pasa a array1[2]...e.t.c

Esto se consigue con la sentencia continue.

Saludos
  #5 (permalink)  
Antiguo 14/07/2009, 12:46
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con arrays

Nuevamente mil gracias por responder, mira lo estoy haciendo asi:
Cita:
for(var k=0;k<menus;k++){
for(var j=0;j<num;j++){
if( valores.split(",")[j] == valores3.split(",")[k] ){
continue;
}
else cadena[k]=valores3.split(",")[k];
}
}
Pero sigo con el problema que es lo q puedo estar haciendo mal, tu recomendación la entiendo y creo q esa puede ser la solución, pero nose como aplicarla a mi problema
  #6 (permalink)  
Antiguo 14/07/2009, 12:51
 
Fecha de Ingreso: julio-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problemas con arrays

Vale he resuelto el problema usando break en vez de continue, que lo habia entendido mal.

Te lo voy a intentar poner en pseudocodigo:
Cita:
desde (i=0;i<longitud array1;i++)
desde (j=0;j<longitud array2;j++)
si array1[i]==array2[j]
// El elemento array1[i] se encuentra en array2, en la posicion j
break;
else si j=longitud array2
// Esto quiere decir que hemos llegado al final de array2 y no se ha encontrado
// ningun elemento que coincida con array1[i]
alert('El elemento '+array1[i]+' no se encuentra en array2'); // Esto lo puedes cambiar por lo que quieras hacer con el dato
fin del if
fin del bucle array2
fin del bucle array1
  #7 (permalink)  
Antiguo 14/07/2009, 14:33
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas con arrays

brother te pasastes, logre obtener lo que buscaba, muchas gracias por todos tus aportes
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 19:09.