Я создаю викторину. У меня есть отдельный файл.js с массивом объектов для вопросов, например:
var questions = [
{
ask: "question",
choice1: "answer",
choice2: "answer",
choice3: "answer",
correct: "correct answer"
},
];
то я получаю случайный объект из массива:
let random = questions[Math.floor(Math.random() * questions.length)];
то я могу отправить эти объекты object.properties в dom следующим образом:
question.innerHTML = random.ask
answer1.innerHTML = random.choice1;
answer2.innerHTML = random.choice2;
answer3.innerHTML = random.choice3;
answer4.innerHTML = random.correct;
И все работает нормально, но мне нужно рандомизировать эти ответы. В таких способах каждый раз, когда правильный ответ находится на одном и том же месте, но мне нужны ответы и правильный ответ на случайное место в dom.
Я застрял в этой проблеме, пытаясь найти любое решение, которое я могу найти в Google, но не успел.
Вы можете использовать одну и ту же логику для рандомизации выборов. Один из способов сделать это можно следующим образом:
var questions = [
{
ask: "question",
choice1: "answer 1",
choice2: "answer 2",
choice3: "answer 3",
correct: "correct answer"
},
];
let random = questions[Math.floor(Math.random() * questions.length)];
console.log(random);
// Make an array of choices key
let choices = [];
Object.keys(random).forEach((item, index) => {
if(key !== "ask") {
choices.push(random[item]);
}
});
console.log(choices);
function getRandomAnswer() {
// Get a random number
let randomNum = Math.floor(Math.random() * choices.length);
// Store random answer in a variable
let answer = choices[randomNum];
// Remove used up answer from choices array
choices.splice(randomNum, 1);
return answer;
}
console.log("Random Answer: ", getRandomAnswer());
console.log("Random Answer: ", getRandomAnswer());
console.log("Random Answer: ", getRandomAnswer());
console.log("Random Answer: ", getRandomAnswer());
Я тоже сделал jsFiddle. Вы можете оптимизировать это в соответствии с вашими потребностями. Надеюсь, поможет!