I have the code for a MCQ app that uses HTML, CSS, and JS. The code asks all the questions that are in the array object (which in this case is 8). However, I want the app to select only five random questions from the list of questions.
const quizData = [
{
question: "What is the most used programming language in 2019?",
a: "Java",
b: "C",
c: "Python",
d: "JavaScript",
correct: "d",
},
{
question: "Who is the President of US?",
a: "Florin Pop",
b: "Donald Trump",
c: "Ivan Saldano",
d: "Mihai Andrei",
correct: "b",
},
{
question: "What does HTML stand for?",
a: "Hypertext Markup Language",
b: "Cascading Style Sheet",
c: "Jason Object Notation",
d: "Helicopters Terminals Motorboats Lamborginis",
correct: "a",
},
{
question: "What year was JavaScript launched?",
a: "1996",
b: "1995",
c: "1994",
d: "none of the above",
correct: "b",
},
{
question: "Which is the largest animal in the world?",
a: "Shark",
b: "Blue Whale",
c: "Elephant",
d: "Giraffe",
correct: "b",
},
{
question: "Which is the smallest country in the world?",
a: "Vatican City",
b: "Bhutan",
c: "Nepal",
d: "Sri Lanka",
correct: "a",
},
{
question: "Which is the largest desert in the world?",
a: "Kalahari",
b: "Gobi",
c: "Sahara",
d: "Antarctica",
correct: "d",
},
{
question: "Which is the smallest continent in the world?",
a: "Asia",
b: "Australia",
c: "Arctic",
d: "Africa",
correct: "b",
},
];
const quiz = document.getElementById("quiz");
const answerEls = document.querySelectorAll(".answer");
const questionEl = document.getElementById("question");
const a_text = document.getElementById("a_text");
const b_text = document.getElementById("b_text");
const c_text = document.getElementById("c_text");
const d_text = document.getElementById("d_text");
const submitBtn = document.getElementById("submit");
let currentQuiz = 0;
let score = 0;
loadQuiz();
function loadQuiz() {
deselectAnswers();
const currentQuizData = quizData[currentQuiz];
questionEl.innerText = currentQuizData.question;
a_text.innerText = currentQuizData.a;
b_text.innerText = currentQuizData.b;
c_text.innerText = currentQuizData.c;
d_text.innerText = currentQuizData.d;
}
function getSelected() {
let answer = undefined;
answerEls.forEach((answerEl) => {
if (answerEl.checked) {
answer = answerEl.id;
}
});
return answer;
}
function deselectAnswers() {
answerEls.forEach((answerEl) => {
answerEl.checked = false;
});
}
submitBtn.addEventListener("click", () => {
// check to see the answer
const answer = getSelected();
if (answer) {
if (answer === quizData[currentQuiz].correct) {
score++;
}
currentQuiz++;
if (currentQuiz < quizData.length) {
loadQuiz();
} else {
quiz.innerHTML = `
<h2>You answered correctly at ${score}/${quizData.length} questions.</h2>
<button onclick="location.reload()">Reload</button>
`;
}
}
});
I know that I can use the random function like this within some kind of loop:
Math.floor(Math.random() * quizData.length);
But I am not sure how to use this within the code.
The project is here: codepen

