jessepinkman010101
@jessepinkman010101
Варю синий код

Как сделать вариативность в данном квизе?

Привет!
Есть такой пример: https://jsfiddle.net/h6nbzavw/

Мучаюсь и никак не могу понять, как мне с данного примера сделать вариативность, например, если в первом вопросе выбрать мотоцикл, то следующим показывать только вопрос про мотоцикл и пропустить про машину, так же для машины например. Перепробовал кучу "способов" (для каждого варианта писать свой if else, но это совсем дикость как мне кажется) но никак не смог такое сделать.

Прошу, помогите разобраться. Буду благодарен любой помощи: ссылки, алгоритмы, прямое решение, код и тд.

Спасибо!
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Такой квиз – это дерево. На каждом шаге выбирается одна из ветвей.

Можно добавлять ветви через поле типа "child" в каждом из вариантов:
spoiler
const quiz = {
  question: 'Выберите один вариант',
  choices: [
    {
      answer: 'мотоцикл',
      child: {
        question: 'Выберите модель мотоцикла',
        choices: [
          { answer: 'Гоночный', child: { ... } },
          { answer: 'Чоппер', child: { ... } }
        ]
      }
    },
    {
      answer: 'Машина',
      child: {
        question: 'Выберите модель машины',
        choices: [
          { answer: 'Ока', child: { ... } },
          { answer: 'Bentley', child: { ... } }
        ]
      }
    }
  ]
},

На практике не очень удобно описывать такую структуру глубоко – легко ошибиться со скобками и пр. В недавнем эксперименте я предпочёл описывать дерево в YAML – там просто отступами – и генерить скриптом из него уже нужную структуру в JSON.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы