如何基于答案类型的数量来创建具有结果的javascript个性测验?

时间:2019-04-18 15:24:59

标签: javascript

我需要进行测验。有4个选项。如果答案A,B,С或В的出现次数超过5次,则结果为“更多A”,依此类推。如果A + B的总和为6或更大,则结果为“更多A + B”,依此类推。我不确定为什么计数有问题,为什么计数A是70?这是quiz

的链接
"use strict";

window.onload = function() {

  var quiz = {
    title: 'Test',

    questions: [{
        text: "В свободное время ты предпочитаешь:",
        responses: [{
            text: 'рисовать',
            value: 'artist'
          },
          {
            text: 'лепить',
            value: 'varchitetor'
          },
          {
            text: 'читать книги, смотреть телевизор (интернет)',
            value: 'designer'
          },
          {
            text: 'ничего из вышеперечисленного',
            value: 'other'
          }
        ]
      },
      {
        text: "Твои любимые школьные предметы",
        responses: [{
            text: 'литература, биология',
            value: 'artist'
          },
          {
            text: 'математика, история',
            value: 'varchitetor'
          },
          {
            text: 'география, музыка',
            value: 'designer'
          },

          {
            text: 'ничего из вышеперечисленного',
            value: 'other'
          }
        ]
      },
      {
        text: "Какие мультфильмы тебе нравятся?",
        responses: [{
            text: 'советские (российские)',
            value: 'artist'
          },
          {
            text: 'американские',
            value: 'varchitetor'
          },
          {
            text: 'японские',
            value: 'designer'
          },

          {
            text: 'любые',
            value: 'other'
          }
        ]
      },
      {
        text: "Выбери набор цветов, который  больше импонирует",
        responses: [{
            text: 'лиловый, лавандовый, апельсиновый',
            value: 'artist'
          },
          {
            text: 'белый, черный, серый',
            value: 'varchitetor'
          },
          {
            text: 'красный, зеленый, синий',
            value: 'designer'
          },

          {
            text: 'сложно сказать',
            value: 'other'
          }
        ]
      },
      {
        text: "Какая из геометрических фигур тебе нравится:",
        responses: [{
            text: 'объемный шар',
            value: 'artist'
          },
          {
            text: 'куб',
            value: 'varchitetor'
          },
          {
            text: 'зигзаг',
            value: 'designer'
          },

          {
            text: 'я бы выбрал другую',
            value: 'other'
          }
        ]
      },
      {
        text: "Если бы ты играл(а) в футбол – какую роль бы ты выбрал(а):",
        responses: [{
            text: 'вратарь',
            value: 'artist'
          },
          {
            text: 'нападающий',
            value: 'varchitetor'
          },
          {
            text: 'тренер',
            value: 'designer'
          },

          {
            text: 'сложно сказать',
            value: 'other'
          }
        ]
      },
      {
        text: "Выбери понравившегося представителя животного мира",
        responses: [{
            text: 'белая пушистая болонка',
            value: 'artist'
          },
          {
            text: 'большой красно-синий попугай',
            value: 'varchitetor'
          },
          {
            text: 'лысая кошка сфинкс',
            value: 'designer'
          },

          {
            text: 'дельфин',
            value: 'other'
          }
        ]
      },
      {
        text: "Кто из героев сказки «Колобок» тебе больше импонирует:",
        responses: [{
            text: 'Колобок',
            value: 'artist'
          },
          {
            text: 'лиса',
            value: 'varchitetor'
          },
          {
            text: 'дедушка с бабушкой',
            value: 'designer'
          },
          {
            text: 'другие животные из сказки',
            value: 'other'
          }
        ]
      },
      {
        text: "В каком классе ты сейчас учишься?",
        responses: [{
            text: '5 класс',
            value: 'artist'
          },
          {
            text: '6 класс',
            value: 'varchitetor'
          },
          {
            text: '7 класс',
            value: 'designer'
          },
          {
            text: '8 класс и старше',
            value: 'other'
          }
        ]
      },
    ]
  };

  var countA = 0;
  var countB = 0;
  var countC = 0;
  var countD = 0;


  var qi = 0;
  var app = new Vue({
    el: '#app',
    data: {
      quiz: quiz,
      questionIndex: 0,
      userResponses: Array()
    },
    methods: {
      // Go to next question
      next: function() {

        if (this.userResponses.length != qi) {

          this.questionIndex++;
          console.log(this.userResponses);
          qi++;
        } else console.log('fffff');


      },
      // Go to previous question
      prev: function() {
        this.questionIndex--;
      },
      score: function() {
        //find the highest occurence in responses
        var modeMap = {};
        var maxEl = this.userResponses[0],
          maxCount = 1;
        for (var i = 0; i < this.userResponses.length; i++) {
          var el = this.userResponses[i];
          if (el == 'artist') countA++;
          else if (el == 'varchitetor') countB++;
          else if (el == 'designer') countC++;
          else if (el == 'other') countD++;
          if (modeMap[el] == null)
            modeMap[el] = 1;
          else
            modeMap[el]++;

          if (modeMap[el] > maxCount) {
            maxEl = el;
            maxCount = modeMap[el];
          }

        }


        if (countA >= 5) {
          return `More A ` + countA + countB + countC + countD;
        } else if (countB >= 5) {
          return 'More B'
        } else if (countC >= 5) {
          return 'More C'
        } else if (countD >= 5) {
          return 'More D'
        } else if (countA + countB >= 6) {
          return 'More A+B'
        } else if (countA + countC >= 6) {
          return 'More A+C'
        } else if (countA + countD >= 6) {
          return 'More A+D'
        } else if (countB + countC >= 6) {
          return 'More B+C'
        } else if (countB + countD >= 6) {
          return 'More B+D'
        } else if (countC + countD >= 6) {
          return 'More C+D'
        } else {
          return 'Divergent' + countA + countB + countC + countD
        }
      }


    }
  });
}

0 个答案:

没有答案