Objetivo: mi objetivo es comparar la entrada del usuario (respuesta a una pregunta de prueba) con una lista de respuestas correctas en una matriz (anidada). Por ejemplo, la pregunta podría ser: Nombre una marca de automóviles alemana, y la respuesta puede ser cualquiera de las siguientes: ["Volkswagen", "Audi", "Opel", "Porsche", etc.]. Si el usuario ingresa cualquiera de estas respuestas, la función debe devolver verdadero y sumar la cantidad total de preguntas respondidas correctamente. Si todas las preguntas se respondieron correctamente, quiero terminar el código con un mensaje para el usuario:
if (numberCorrect == quizQuestions.length) { document.getElementById("correct").innerHTML = "All answers are correct";Código de la matriz quizQuestions:
const quizQuestions = [ "Wat is de hoofdstad van Frankrijk?", "Hoeveel benen heeft een spin?", "Wat is het grootste meer van Nederland?", "Noem een Duits automerk", "Noem een Waddeneiland", "In hoeveel dagen draait de aarde om de zon?", "Wat is de grootste oceaan ter wereld?" ];Código de la matriz de respuestas correctas:
const correctAnswers = [ "Parijs", 8, "IJsselmeer", ["Volkswagen", "Audi", "Opel", "Porsche", "BMW", "Mercedes", "Mercedes-Benz"], ["Texel", "Vlieland", "Terschelling", "Ameland", "Schiermonnikoog"], 365, "Stille Oceaan" ];Problema: por alguna razón, pasar por las dos matrices de respuestas anidadas usando correctAnswers.includes(answer) no funciona. Leí que .includes no funciona en matrices anidadas, ¿es esto cierto? Mis otras preguntas de prueba con una respuesta, como: ¿Cuál es la capital de Francia?, se comparan fácilmente con la entrada del usuario usando este código básico:
numberCorrect = 0; var answer = document.querySelector("#input0").value; if (correctAnswers[0] == answer) { numberCorrect++; }El código anterior agrega correctamente 1 a correctAnswers.
Sin embargo, al llegar a la matriz anidada con varias respuestas posibles (p. ej., marcas de automóviles alemanas), mi respuesta correcta no funciona/se suma al número total correcto:
answer = document.querySelector("#input3").value; if (correctAnswers.includes(answer) == true) { numberCorrect++; }Además, parece que no puedo ser más preciso y elegir el índice correcto en la matriz principal de esta manera:
correctAnswers[3].includes(answer)¿Hay quizás alguien que pueda ayudar? ¡Gracias por adelantado!
Puede usar indexOf para verificar cadenas y matrices, ambos funcionan exactamente como se includes , vea el ejemplo a continuación
const correctAnswers = [ "Parijs", 8, "IJsselmeer", ["Volkswagen", "Audi", "Opel", "Porsche", "BMW", "Mercedes", "Mercedes-Benz"], ["Texel", "Vlieland", "Terschelling", "Ameland", "Schiermonnikoog"], 365, "Stille Oceaan" ]; var isAnsRight = correctAnswers[3].indexOf("Audi") >= 0 console.log(isAnsRight)