score:0

Accepted answer

this function will return the data you need for chartjs:

function getcountdata(choices, results) {
  var counts = {};
  var data = [];

  choices.foreach(function(c) {
    counts[c] = 0;
  });

  results.foreach(function(r) {
    counts[r] += 1;
  });

  object.keys(counts).foreach(function(c) {
    data.push(counts[c]);
  });

  return data;
}

var choices = ['answer1', 'answer2', 'answer3', 'answer4', 'answer5'];
var results = ["answer1", "answer1", "answer1", "answer1", "answer1", "answer2", "answer2", "answer2"];

console.log(getcountdata(choices, results));

you can use the above function with chartjs like this:

data: {
  labels: choices,
  datasets: [{
    label: ': votes',
    data: getcountdata(choices, results),
    // ...
  }]
},

score:0

this fonction can count your answers based on your answers and results :

function dynamiccounter(answers,results){
    return answers.map( (a) => {
        var nb = 0;
        results.foreach( (r) => { if(a === r)nb++ } ); 
        return { [a] : nb }
    })
}

if you want only the results to give to chartjs (as data) :

function results(answers,results){
    return answers.map( (a) => {
        var nb = 0;
        results.foreach( (r) => { if(a === r)nb++ } ); 
        return nb;
    })
}

here a working jsfiddle https://jsfiddle.net/wanhe6rs/1/


Related Query

More Query from same tag