Foros del Web » Programando para Internet » Javascript »

Comparar 2 arrays segun condicion

Estas en el tema de Comparar 2 arrays segun condicion en el foro de Javascript en Foros del Web. Hola a tod@s Tengo 2 arrays y necesito recorrer todos los elementos de un array e ir comparando con todos los valores del segundo array ...
  #1 (permalink)  
Antiguo 28/03/2018, 10:47
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Comparar 2 arrays segun condicion

Hola a tod@s

Tengo 2 arrays y necesito recorrer todos los elementos de un array e ir comparando con todos los valores del segundo array pero en este array se tiene que cumplir la condición de que el elemento (datos[j][4]!="") no esté vacio

Código Javascript:
Ver original
  1. //Esta sería la condición a incluir
  2. //if(datos[j][0].substr(0,2) && datos[j][4]!=""){  
  3.  
  4.   function comprobar() {    
  5.     mostrarRepes=[];           
  6.        
  7.     arrayCat2=eval("am_" + item.codigo)
  8.  
  9.     elemA=0;       
  10.  
  11.         // recorremos los valores del array arrayCat2
  12.         for(i=0;i<arrayCat2.length;i++){           
  13.             // recorremos los valores del array datos
  14.                        
  15.             for(j=0;j<datos.length;j++){                
  16.                 // Cada valor del array arrayCat lo comparamos con todos los valores del array datos
  17.                //Esto es lo que tendría que hacer
  18.                //if (arrayCat2[i][0]==datos[j][0].substr(0,2)) && datos[j][4]!=""){
  19.                if (arrayCat2[i][0]==datos[j][0].substr(0,2))
  20.                                   elemA++;
  21.             }
  22.             if (elemA!=0)
  23.                 mostrarRepes.push(arrayCat2[i]);
  24.                
  25.                 elemA=0;
  26.                    
  27.         }
  28.     return mostrarRepes
  29.  }
El array arrayCat2 son varios y utilizo uno u otro en función de la variable que recibo desde otra función a través de un evento onclick y al hacer el recorrido del array datos datos[j][0] cuando encuentra un código que no tiene el array correspondiente me sale el mensaje de array undefined y para evitar esto le puesto la condición de que el elemento datos[j][4] tenga contenido y esta es la solución que se me ha ocurrido, así que me imagino que para que funcione tengo que crear un nuevo array con los elementos que cumplan dicha condición y sobre este nuevo array hacer la comparación, pero no se como hacer todo esto en un única función, espero que podáis ayudarme
  #2 (permalink)  
Antiguo 28/03/2018, 14:02
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Comparar 2 arrays segun condicion

No entendí del todo tu pregunta, quizá si colocas ejemplos de arrays con contenido o lo explicas de otra forma, se pueda encontrar una solución más eficaz, ya que javascript tiene funciones de búsqueda (básicas) en arrays.
  #3 (permalink)  
Antiguo 31/03/2018, 11:14
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Comparar 2 arrays segun condicion

Te pongo unos arrays de ejemplo
Estos son los arrayCat2
Código Javascript:
Ver original
  1. var am_150619_46 = new Array();
  2. am_150619_46 = [["01","Hogar46"],
  3. ["02","Informática46"],
  4. ["03","Ocio y Deporte46"]];
  5.  
  6. var am_150413_44 = new Array();
  7. am_150413_44 = [["01","Hogar44"],
  8. ["02","Informática44"],
  9. ["03","Ocio y Deporte44"]];
  10.  
  11. var am_150410_42 = new Array();
  12. am_150410_42 = [["01","Hogar45"],
  13. ["02","Informática45"],
  14. ["03","Ocio y Deporte45"]];
Y este el array datos
Código Javascript:
Ver original
  1. var datos = new Array();
  2. datos = [["010101","150619_46","39/01/2018","f_15061946_1","3"],
  3. ["030100","150427_45","20/03/2018","15042745_1",""],
  4. ["010102","150413_44","18/02/2018","15041344_1","2"],
  5. ["010101","150410_43","14/01/2018","15041043_1",""],
  6. ["010101","150410_42","04/01/2018","15041042_1","1"],
  7. ["010101","141030_41","04/01/2018","14103041_1",""]];
Lo que yo quiero es que al pinchar en el array datos sobre la opción 150619_46 me aparezcan los elementos del arrayCat am_150619_46 y así con el resto, hasta aquí no hay ningún problema, pero hay arrays que no están creados que son los que el elemento [4] está vacío como el 150427_45 pero al cargar la página me ejecuta la función y como el recorrido me lo hace sobre todo el array datos, cuando encuentra uno que no tiene arrayCat creado me muestra el mensaje de am150427_45 no está definido y ahí se queda bloqueado, y la forma que se me ha ocurrido de solucionarlo es que el recorrido en el array datos me lo haga sólo sobre los que cumplan la condición de que el elemento [4] tenga contenido, a lo mejor hay alguna otra forma de resolver el problema

Última edición por pedromir; 31/03/2018 a las 11:17 Razón: Me he confundido al escribir una palabra
  #4 (permalink)  
Antiguo 31/03/2018, 12:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar 2 arrays segun condicion

En lugar de tener arreglos aislados, te convendría tener un objeto en donde cada atributo pueda contener otros objetos y arreglos. La organización de los datos sería más legible y fácil de manipular.

Código Javascript:
Ver original
  1. var obj = {
  2.     am_150619_46: {
  3.         codigo: "01",
  4.         nombre: "Informática",
  5.         fecha: "15/04/2018"
  6.     },
  7.  
  8.     am_150619_52: {
  9.         codigo: "02",
  10.         nombre: "Electrónica",
  11.         fecha: "22/10/2018"
  12.     },
  13. };
  14.  
  15. console.log(obj["am_150619_46"].codigo); //01
  16. console.log(obj["am_150619_46"].nombre); //Informática
  17. console.log(obj["am_150619_46"].fecha); //15/04/2018

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 02/04/2018, 11:31
 
Fecha de Ingreso: enero-2014
Mensajes: 91
Antigüedad: 10 años, 3 meses
Puntos: 2
Respuesta: Comparar 2 arrays segun condicion

Pero cada arreglo, siguiendo mi ejemplo contiene varios códigos, 01,02,03 varios nombres Hogar, Informática y Ocio y deporte y varias fechas y al siguiente arreglo le ocurre lo mismo
  #6 (permalink)  
Antiguo 02/04/2018, 12:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Comparar 2 arrays segun condicion

Cita:
Iniciado por pedromir Ver Mensaje
Pero cada arreglo, siguiendo mi ejemplo contiene varios códigos, 01,02,03 varios nombres Hogar, Informática y Ocio y deporte y varias fechas y al siguiente arreglo le ocurre lo mismo
Eso no tiene nada que ver. Si lo que deseas es obtener los datos relacionados a un dato de otra fuente que el usuario seleccione de alguna de las distintas maneras de hacerlo, la asociación de los mismos mediante grupos identificados por un dato, en este caso, el atributo de un objeto, te permitirá fácilmente ubicarlos en la fuente objetivo y mostrarlos. Tenerlos por separado en variables distintas es nada eficiente y poco práctico.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: arrays, funcion, valor
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:21.