Показать оценку викторины, организованной по разным подкатегориям - PullRequest
0 голосов
/ 04 декабря 2018

Я изо всех сил пытаюсь найти лучший подход для отображения результата теста с несколькими вариантами ответов по различным категориям.Я довольно новичок в JavaScript, и если бы кто-то мог указать мне правильное направление, я был бы очень признателен.

В качестве справочной информации, разные ответы имеют разные точки (см. Ниже).

const energyQuestions = [
  {
     "question": "In summer, the temperature of your AC ?",
    "answer1": "+26℃",
    "answer1Total": "5",
    "answer2": "20-25℃",
    "answer2Total": "3",
    "answer3": "16-20℃",
    "answer3Total": "1"
  },
  {
   "question": "Will you turn off the screen when you are not using your PC ?",
    "answer1": "Often",
    "answer1Total": "5",
    "answer2": "Sometimes",
    "answer2Total": "3",
    "answer3": "Rarely",
    "answer3Total": "1"
  }
  ]

В настоящее время общая оценка теста может отображаться правильно (см. Ниже), но у меня возникла проблема с отображением оценок, распределенных по различным категориям, таким как оценка energyQuestions, оценка polutionQuestions и т. Д.

 //Get value of selected radio
    const answerScore = Number(selectedOption.nextElementSibling.getAttribute('data-total'));

    ////Add the answer score to the score array
    score.push(answerScore);

    selectedAnswersData.push()


    const totalScore = score.reduce((total, currentNum) => total + currentNum);

1 Ответ

0 голосов
/ 04 декабря 2018

Подумайте, как вы структурируете данные для вопросов.Если у каждого объекта вопроса есть свойство category, вы можете использовать его при представлении данных, а также для вычисления итогов для определения баллов по категориям.

const questions = [
  {
    category: "energy",
    question: "In summer, the temperature of your AC ?",
    answers: [
      { text: "+26℃", score: 5 },
      { text: "20-25℃", score: 3 },
      { text: "16-20℃", score: 1 },
    ]
  },
  {
    category: "energy",
    question: "Will you turn off the screen when you are not using your PC ?",
    answers: [
      { text: "Often", score: 5 },
      { text: "Sometimes", score: 3 },
      { text: "Rarely", score: 1 }
    ]
  },
];

Функцию filter можно использовать только для представлениявопросы для определенной категории.

var categoryFilterMaker = function(category) {
  return function(obj) { 
    return obj.category === category
  }
}

// Create a filter for the 'energy' category
var energyFilter = categoryFilterMaker('energy');

// Filter the questions
questions.filter(energyFilter);

Вы можете добавить свойство к каждому объекту, чтобы записать выбранный ответ или его оценку.

Функции картографирования, уменьшения и фильтрации являются связными, поэтому вы можете использовать их для получения результатов в любом формате, который вам необходим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...