получить объект.properties и поместить его случайным образом в элементе dom.Vanila Js - PullRequest
0 голосов
/ 28 октября 2018

Я создаю игру-викторину.У меня есть отдельный файл .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чтобы это выглядело так:

question.innerHTML = random.ask
answer1.innerHTML = random.choice1;
answer2.innerHTML = random.choice2;
answer3.innerHTML = random.choice3;
answer4.innerHTML = random.correct;

И все работает отлично, но мне нужно рандомизировать эти ответы. Таким образом, каждый раз правильный ответ находится на одном и том же месте, но мне нужны ответы и правильный ответ, чтобы занять случайное местов дом.

Я застрял в этой проблеме, пробуя каждое решение, которое я могу найти в Google, но безуспешно.

1 Ответ

0 голосов
/ 28 октября 2018

Вы можете использовать ту же логику, чтобы рандомизировать выбор.Один из способов сделать это можно следующим образом:

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 .Вы можете оптимизировать это в соответствии с вашими потребностями.Надеюсь, это поможет!

...