Estoy creando un programa en el que el usuario presiona un botón para obtener una pregunta aleatoria y luego puede presionar otro botón para obtener la respuesta. Quería hacer un diccionario en JS para contener las preguntas y respuestas, pero no sabía cómo hacerlo, así que opté por dos matrices; uno con las preguntas y otro con las respuestas. Este método funciona bien, pero sé que debe haber una forma más correcta de lograr lo mismo con un diccionario que contenga pares clave-valor. Aquí está el código JavaScript:
const questions = Array( "Question one", "Question two", "Question three", ); const answers = Array( "Answer one", "Answer two", "Answer three", ); function randomQuestion() { const len = answers.length; const rnd = Math.floor(Math.random() * len); document.getElementById('randomQuestion').value = questions[rnd]; document.getElementById('randomAnswer').value = answers[rnd]; }Gracias de antemano. ¡Soy nuevo en la codificación, por lo que se agradece cualquier ayuda!
class QuestionAnswer { QA; constructor() { this.QA = []; } AddQuestion(question, answer) { this.QA.push({ question: question, answer: answer }); } GetQuestion(index) { return this.QA[index]; } } const qa = new QuestionAnswer(); qa.AddQuestion("Q1", "A1"); qa.AddQuestion("Q2", "A2"); qa.AddQuestion("Q3", "A3"); const q1 = qa.GetQuestion(1); console.log(`Question: ${q1.question} - Answer: ${q1.answer}`);La respuesta de Melih es correcta, pero sin usar clases solo haz esto:
const questions = [ { question: "Question one", answer: "Answer one" }, { question: "Question two", answer: "Answer two" }, { question: "Question three", answer: "Answer three" }, ]; function randomQuestion() { const len = answers.length; const rnd = Math.floor(Math.random() * len); document.getElementById('randomQuestion').value = questions[rnd].question; document.getElementById('randomAnswer').value = questions[rnd].answer; }