Calculate score based on array object using jquery

I’m beginner in JavaScript and I’m trying to make a quiz that calculates the score of object(type) in the array. So the total score should count how much the user get in each part(ex:2/2 in math, 1/2 in science. Total= 3/4). Is there any possible way to do that using jquery ? help me please, thank you.
My code:

var all_questions = [{
  type:"math",
  question_string: "4 + 4",
  choices: {
    correct: "8",
    wrong: ["2", "3", "9"]
  }
}, {
  type:"math",
  question_string: "4 * 4",
  choices: {
    correct: "16",
    wrong: ["24", "13", "4"]
  }
}, {
  type:"sience",
  question_string: "What part of the body helps you move?",
  choices: {
    correct: "Muscles",
    wrong: ["Eyes", "Pancreas", "Lungs"]
  }
}, {
   type:"sience",
  question_string: 'What star shines in the day and provides light?',
  choices: {
    correct: "Sun",
    wrong: ["Moon", "Venus", "Mars"]
  }
}];
var Quiz = function(quiz_name) {
  this.quiz_name = quiz_name;
  this.questions = [];
}
Quiz.prototype.add_question = function(question) {
  var index_to_add_question = Math.floor(Math.random() * this.questions.length);
  this.questions.splice(index_to_add_question, 0, question);
}
Quiz.prototype.render = function(container) {
  var self = this;
  $('#quiz-results').hide();
  $('#quiz-name').text(this.quiz_name);
  var question_container = $('<div>').attr('id', 'question').insertAfter('#quiz-name');
  function change_question() {
    self.questions[current_question_index].render(question_container);
    $('#prev-question-button').prop('disabled', current_question_index === 0);
    $('#next-question-button').prop('disabled', current_question_index === self.questions.length - 1);
    var all_questions_answered = true;
    for (var i = 0; i < self.questions.length; i++) {
      if (self.questions[i].user_choice_index === null) {
        all_questions_answered = false;
        break;
      }
    }
    $('#submit-button').prop('disabled', !all_questions_answered);
  }
  var current_question_index = 0;
  change_question();
  $('#prev-question-button').click(function() {
    if (current_question_index > 0) {
      current_question_index--;
      change_question();
    }
  });
 
  $('#next-question-button').click(function() {
    if (current_question_index < self.questions.length - 1) {
      current_question_index++;
      change_question();
    }
  });
  $('#submit-button').click(function() {
    var score = 0;
    for (var i = 0; i < self.questions.length; i++) {
      if (self.questions[i].user_choice_index === self.questions[i].correct_choice_index) {
        score++;
      }
    }
    var percentage = score / self.questions.length;
    console.log(percentage);
    var message;
    if (percentage === 1) {
      message = 'Great job!'
    } else if (percentage >= .75) {
      message = 'You did alright.'
    } else if (percentage >= .5) {
      message = 'Better luck next time.'
    } else {
      message = 'Maybe you should try a little harder.'
    }
    $('#quiz-results-message').text(message);
    $('#quiz-results-score').html('You got <b>' + score + '/' + self.questions.length + '</b> questions correct.');
    $('#quiz-results').slideDown();
    $('#quiz button').slideUp();
  });
  question_container.bind('user-select-change', function() {
    var all_questions_answered = true;
    for (var i = 0; i < self.questions.length; i++) {
      if (self.questions[i].user_choice_index === null) {
        all_questions_answered = false;
        break;
      }
    }
    $('#submit-button').prop('disabled', !all_questions_answered);
  });
}

var Question = function(question_string, correct_choice, wrong_choices) {
  // Private fields for an instance of a Question object.

  this.question_string = question_string;
  this.choices = [];
  this.user_choice_index = null; // Index of the user's choice selection
  
  // Random assign the correct choice an index
  this.correct_choice_index = Math.floor(Math.random() * wrong_choices.length + 1);

  // Fill in this.choices with the choices
  var number_of_choices = wrong_choices.length + 1;
  for (var i = 0; i < number_of_choices; i++) {
    if (i === this.correct_choice_index) {
      this.choices[i] = correct_choice;
    } else {
      // Randomly pick a wrong choice to put in this index
      var wrong_choice_index = Math.floor(Math.random(0, wrong_choices.length));
      this.choices[i] = wrong_choices[wrong_choice_index];
      
      // Remove the wrong choice from the wrong choice array so that we don't pick it again
      wrong_choices.splice(wrong_choice_index, 1);
    }
  }
}

Question.prototype.render = function(container) {

  var self = this;
  

  var question_string_h2;
  if (container.children('h2').length === 0) {
    question_string_h2 = $('<h2>').appendTo(container);
  } else {
    question_string_h2 = container.children('h2').first();
  }
  question_string_h2.text(this.question_string);
  

  if (container.children('input[type=radio]').length > 0) {
    container.children('input[type=radio]').each(function() {
      var radio_button_id = $(this).attr('id');
      $(this).remove();
      container.children('label[for=' + radio_button_id + ']').remove();
    });
  }
  for (var i = 0; i < this.choices.length; i++) {
    var choice_radio_button = $('<input>')
      .attr('id', 'choices-' + i)
      .attr('type', 'radio')
      .attr('name', 'choices')
      .attr('value', 'choices-' + i)
      .attr('checked', i === this.user_choice_index)
      .appendTo(container);
    

    var choice_label = $('<label>')
      .text(this.choices[i])
      .attr('for', 'choices-' + i)
      .appendTo(container);
  }
  
  
  $('input[name=choices]').change(function(index) {
    var selected_radio_button_value = $('input[name=choices]:checked').val();
    
 
    self.user_choice_index = parseInt(selected_radio_button_value.substr(selected_radio_button_value.length - 1, 1));
    
  
    container.trigger('user-select-change');
  });
}


$(document).ready(function() {

  var quiz = new Quiz('');
  
  for (var i = 0; i < all_questions.length; i++) {

    var question = new Question(all_questions[i].question_string, all_questions[i].choices.correct, all_questions[i].choices.wrong);

    quiz.add_question(question);
  }

  var quiz_container = $('#quiz');
  quiz.render(quiz_container);
});

Assuming you created a div with id="quiz-results-score-breakdown", you could change the callback function of the submit-button's click handler to:

  $('#submit-button').click(function() {
    var score = 0;
    var typeSummary = {};
    for (var i = 0; i < self.questions.length; i++) {
      console.log(self.questions[i]);
      var type = self.questions[i].type;
      console.log('type = ' + type);
      if (!typeSummary.hasOwnProperty(type)) {
        typeSummary[type] = {
          score: 0,
          total: 0
        }
      }
      if (self.questions[i].user_choice_index === self.questions[i].correct_choice_index) {
        score++;
        typeSummary[type].score++;
      }
      typeSummary[type].total++;
    }
    var types = Object.keys(typeSummary);
    var scoreBreakdown = types
      .map(function(type) {
       return '<b>' + type + ':</b> ' + typeSummary[type].score + '/' + typeSummary[type].total;
      })
      .join(' | ');
    var percentage = score / self.questions.length;
    var message;
    if (percentage === 1) {
      message = 'Great job!'
    } else if (percentage >= .75) {
      message = 'You did alright.'
    } else if (percentage >= .5) {
      message = 'Better luck next time.'
    } else {
      message = 'Maybe you should try a little harder.'
    }
    $('#quiz-results-message').text(message);
    $('#quiz-results-score').html('You got <b>' + score + '/' + self.questions.length + '</b> questions correct.');
    $('#quiz-results-score-breakdown').html(scoreBreakdown);
    $('#quiz-results').slideDown();
    $('#quiz button').slideUp();
  });