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

1

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

Теги:
object
dom
properties
random

1 ответ

0
Лучший ответ

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

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

  • 0
    Да ... Большое спасибо, мне удается включить в мой код, и он прекрасно работает.
  • 0
    Рад, что смог помочь :) Не могли бы вы также подтвердить этот ответ (кнопка со стрелкой вверх). И добро пожаловать в это огромное сообщество Stackoverflow.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню