Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/10/2014, 23:33
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Buscar dos elementos en un array y mostrar las coincidencias

Supongamos que tenemos esta estructura:

Código HTML:
Ver original
  1. Ingrese el nombre:  <input type = "text" id = "nombre" />
  2.  
  3. Seleccione el curso:
  4. <select id = "curso">
  5.     <option value = "0101">Deporte</option>
  6.     <option value = "0201">Informática</option>
  7.  
  8. <button onclick = "buscar()">Buscar</button>

Si lo que buscas es que se muestren a todas las personas cuyo nombre coincida con el escrito en la caja de texto y lleven el curso que seleccionaste en el combo, puedes hacer algo como esto:

Código Javascript:
Ver original
  1. var input = document.querySelector("#nombre"),
  2.     select = document.querySelector("#curso"),
  3.     cursos = [
  4.         ['0101','Deporte'],
  5.         ['0201','Informática']
  6.     ],
  7.     datos = [
  8.         ['0101','Manuel'],
  9.         ['0101','Antonio'],
  10.         ['0101','Juan'],
  11.         ['0201','Juan'],
  12.         ['0201','Antonio'],
  13.         ['0201','Luis']
  14.     ],
  15.     buscar = function(){
  16.         var nombre = input.value,
  17.             curso = select.value,
  18.             nombreCurso = select.options[select.selectedIndex].innerHTML,
  19.             final = [];
  20.        
  21.         for (var i = 0, l = datos.length; i < l; i++)
  22.             if (datos[i][1] == nombre)
  23.                 for (var j = 0, m = cursos.length; j < m; j++)
  24.                     if (cursos[j][0] == curso && datos[i][0] == curso) 
  25.                         final.push(datos[i][1]);   
  26.        
  27.         return console.log(final.join(" y ") + (final.length > 1 ? " tienen " : " tiene ") + nombreCurso);
  28.     };

Primero, tomo a la caja de texto, al combo y declaro a los arrays que contienen a los arrays con los datos y una función que realizará la búsqueda. En la función, tomo el valor escrito en la caja, el valor seleccionado en el combo y el contenido del mismo, además, declaro un array en el que irán los datos que coincidan en la búsqueda.

Recorro al array con los arrays de los nombres de las personas. En cada iteración, verifico si el nombre del array actual en la iteración, coincide con el escrito en la caja de texto. De ser así, paso a recorrer al array que contiene a los arrays con los nombres de los cursos y, en cada iteración, verifico si el código del curso coincide con el seleccionado en el combo y si el código de la coincidencia encontrada en el primer bucle (el que itera al array datos), es igual al curso seleccionado. De cumplirse todo esto, inserto el nombre de la persona en el array final y una vez que termine la búsqueda, retorno a los datos encontrados, mostrándolos en consola.

Por ejemplo, si busco a 'Juan' y selecciono 'Deporte', al haber dos personas con el nombre 'Juan' pero solo una de ellas lleva 'Deporte', el mensaje que se muestre será así:

Código Consola:
Ver original
  1. Juan tiene Deporte

Ahora que, si deseas, para saber de qué Juan se trata, podrías mostrar también el código del curso que le asignaste.

Saludos
__________________
«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