Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Comparar dos arrays indicando las igualdades

Estas en el tema de Comparar dos arrays indicando las igualdades en el foro de Javascript en Foros del Web. :neurótico Hola, trato de hacer un script que compare un array llamado "respuestas" con el contenido de los inputs de una lista ( recogida en ...
  #1 (permalink)  
Antiguo 01/05/2015, 12:35
 
Fecha de Ingreso: mayo-2015
Ubicación: Brasil
Mensajes: 13
Antigüedad: 9 años
Puntos: 0
Comparar dos arrays indicando las igualdades

:neurótico Hola, trato de hacer un script que compare un array llamado "respuestas" con el contenido de los inputs de una lista ( recogida en el array "ids"). Conseguí un poco de ayuda pero este escript solo funciona para el último par "respuesta/Id", los demás aparecen pintados en rojo, como incorrectos... Sabrían decirme que está mal? Desde ya, gracias!
Código:
function Corregir(){
	var respuestas=['estudié', 'estoy', 'es', 'lloverá', 'terminé', 'son', 'viajo'];
	var ids=['q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7']; /* id de los campos "input"* del ejercicio/
	

		for (var i = 0; i < respuestas.length; i++) {
				for (var x = 0; x < ids.length; x++) {
					
		var myInput = document.getElementById(ids[x]);
	if(myInput.value==respuestas[i]){
	    myInput.style.backgroundColor='green';}
	else { myInput.style.backgroundColor='red';	}}}}
  #2 (permalink)  
Antiguo 01/05/2015, 12:42
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Comparar dos arrays indicando las igualdades

No es necesario anidar dos bucles... de hecho no debes hacerlo.
  #3 (permalink)  
Antiguo 01/05/2015, 13:04
 
Fecha de Ingreso: mayo-2015
Ubicación: Brasil
Mensajes: 13
Antigüedad: 9 años
Puntos: 0
Respuesta: Comparar dos arrays indicando las igualdades

Cómo lo puedo arreglar, entonces? La verdad es que no tengo idea de cómo ordenar correctamente la lógica... (soy un aficionado...)
  #4 (permalink)  
Antiguo 01/05/2015, 13:05
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 dos arrays indicando las igualdades

Bienvenido a FDW.

Solo necesitas recorrer el array de los identificadores de las cajas de texto y, en cada iteración, verificar si el valor de la caja de texto actual en la iteración se encuentra en el array respuestas, para lo cual puedes usar el método indexOf, el cual devuelve el índice en el cual se encuentra el valor buscado en el array o -1 si es que no está. Una vez obtenido el valor, puedes pintar el fondo de la caja de texto del color que decidas.

Y solo por si buscas compatibilidad con viejos navegadores (que cada vez son menos usados), puedes utilizar el algoritmo explicado en esta sección.

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
  #5 (permalink)  
Antiguo 01/05/2015, 16:24
 
Fecha de Ingreso: mayo-2015
Ubicación: Brasil
Mensajes: 13
Antigüedad: 9 años
Puntos: 0
Respuesta: Comparar dos arrays indicando las igualdades

Yo obtuve una respuesta en outro foro. La verdade que programo por hobby y todavia me falta mucho para resolver mis dudas consultando documentación (aunque la leo bastante...). Entendi que no necesitaba hacer loop por ambos arrays como me sugerieron pero nunca llegaría solo a la solución:
Código:
for (var i = 0; i < ids.length; i++) {
    myInput = document.getElementById(ids[i]);
    if(myInput.value==answers[i]){
        myInput.style.backgroundColor='green';
    }
    else {
        myInput.style.backgroundColor='red';
    }
}
Gracias!
  #6 (permalink)  
Antiguo 01/05/2015, 20:24
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 dos arrays indicando las igualdades

Solo te falta usar el método indexOf y quitar la comparación que estás haciendo.

Código Javascript:
Ver original
  1. if (answers.indexOf(myInput.value) > -1){
  2.     myInput.style.backgroundColor = 'green';
  3. }
  4. else{
  5.     myInput.style.backgroundColor = 'red';
  6. }

La documentación que te pasé tiene ejemplos, debiste de verlos o preguntar sobre lo que no entendías sobre ellos.

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
  #7 (permalink)  
Antiguo 02/05/2015, 03:18
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Comparar dos arrays indicando las igualdades

Que no me entere yo que posteas en otros foros, ¡eh!

Alexis88, con tu ejemplo efectivamente compruebas si un valor aparece en el array, pero, ¿si el orden importase? Es decir, si fuera:

q1 = 'estudié'
q2 = 'estoy'
q3 = 'es'

[...]

  #8 (permalink)  
Antiguo 02/05/2015, 09:56
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 dos arrays indicando las igualdades

Pues, no ha mencionado nada acerca del orden.
__________________
«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
  #9 (permalink)  
Antiguo 02/05/2015, 10:49
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Comparar dos arrays indicando las igualdades

Era una indirecta

Etiquetas: arrays, funcion, input
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:29.