Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

210
Vistas
¿Cómo puedo comparar dos matrices y ejecutar una función según la cantidad de elementos coincidentes (independientemente del índice)?

Tenía una solución anterior con .forEach que no consideraba el hecho de que las respuestas se pueden seleccionar en el orden incorrecto, por lo que los elementos están exactamente en el mismo índice. Si se seleccionó en el orden incorrecto, no coincidiría (aunque fuera la respuesta correcta).

Ahora estoy probando una solución con .every , pero no cambia la score cuando se hace clic en el botón "verificar respuestas". En caso de que desee verificar el código completo, aquí está (es un poco demasiado para escribir; soy nuevo en stackoverflow, así que lmk si se sugiere un método mejor para compartir múltiples componentes): https://replit. com/@arshia93/Quizzical#sections/QuizData.jsx

 function scoreQuiz(allCorrectAnswers, selections) { let totalScore = 0; if(allCorrectAnswers.length === selections.length) { return allCorrectAnswers.every((element, index) => { element === selections[index] ? totalScore++ : totalScore }) setScore(totalScore) } setFinished(!finished) }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo que dijo alonealgorithm es cierto que no debe devolver la llamada .every() , ya que desea realizar una actualización de estado después de que se complete. Sin embargo, no creo que .every() sea el método de matriz que desea usar aquí. Verificará cada elemento y realizará el totalScore++ , pero no es la forma más declarativa de hacerlo.

Recomendaría usar el método .reduce() , ya que eso es esencialmente lo que está tratando de hacer aquí. Esto debería ayudarte:

 const totalScore = selections.reduce((score, selection) => score + (allCorrectAnswers.includes(selection) ? 1 : 0) , 0); setScore(totalScore);

¡Nota! Si es posible que 2 preguntas tengan la misma opción de respuesta, esto no funcionará e identificará incorrectamente una respuesta correcta. Para adaptarse a esto, deberá reemplazar la selección en un índice particular (en lugar de agregar cada uno a medida que se selecciona), o hacer coincidir cada selección con una identificación de pregunta.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Miré su código en la repetición que vinculó. Creo que el problema está en la línea 41, donde devuelve el resultado de llamar a every métodos en su matriz allCorrectAnswers . Entonces, después de que every método haya terminado de ejecutarse, devuelve el valor true o false y sale de la función scoreQuiz antes de llegar a la siguiente línea donde habría establecido el setScore para su prueba. Por lo tanto, debe eliminar la declaración de devolución y dejar que se ejecuten los ganchos setScore y setFinished .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda