Estoy trabajando en una secuencia de comandos para calificar una respuesta del usuario comparando dos matrices. (Es un cuestionario para ver qué tan bien saben la información palabra por palabra.) Ya tengo parte del código que necesito, como hacer que la respuesta del usuario sea minúscula y dividirla. Todo lo que necesito es algo para encontrar la cantidad de diferencias/errores. Por ejemplo:Usar JavaScript para calificar la respuesta del usuario (comparar dos matrices)
var correctanswer = ["The","quick","brown","fox","jumped","over","the","lazy","dog"];
var useranswer = ["The","brown","fox","jumped","up","and","over","the","really","lazy","cat"];
alert(counterrors(correctanswer, useranswer));
En este ejemplo en particular, se ejecuta la función Busco devolvería que el usuario hace 5 errores (se omite "rápida", añaden "arriba", "y" y "realmente", y ha cambiado "perro" por "gato"). Como puede ver, las dos matrices pueden ser de diferentes longitudes.
¿Alguien sabe cómo acercarse a esto? Pensaba que probablemente sería un ciclo como el siguiente:
for (x in correctanswer) {
// compare correctanswer[x] to useranswer[x]... not sure how exactly. Seems tricky...
}
¡Gracias por mirar esto! He visto la solución de diferencias de John Resig (http://ejohn.org/projects/javascript-diff-algorithm/) y otras cosas similares, e incluso algunas comparaciones de matriz, pero nada parecía funcionar, ya que las que encontré devuelven todas las diferencias, mientras que quiero ver cuántas diferencias hay. De nuevo, gracias por mirar y por favor háganme saber cualquier pregunta.
Actualización: ¡Muchas gracias a Magnar por la respuesta! Funcionó perfectamente.
Magnar - ¡Gracias! Creo que esto es todo ... ¿Entonces pasaría los valores de matriz en lugar de las cadenas como lo hicieron en el artículo? – Alex
Sí, en lugar de caracteres, usaría los valores de matriz; las palabras. – Magnar
¡Muchas gracias por su ayuda! Todavía no soy muy bueno con JavaScript, pero trataré de tomarlo desde aquí. Si tiene alguna sugerencia sobre cómo implementar, hágamelo saber. Voy a marcar esto como la respuesta aceptada. – Alex