2017-06-02 25 views
0

首先,我想用兩個JSON數組數出現:將數據添加到從表中動態charts.js

問表作爲可選答案:

{["Answer1","Answer2","Answer3","Answer4", ...]} 

結果表作爲答案:

{["Answer1","Answer1","Answer1","Answer1","Answer1","Answer2","Answer2","Answer2"]} 

我需要弄清楚如何動態計數它們

{ 
    Answer1: 5, 
    Answer2: 3, 
    Answer3: 0, 
    Answer4: 0 
} 

然後,我還需要將它們傳遞到這個Charts.js(標籤和數據)

data: { 
    labels: ['Answer1', 'Answer2', 'Answer3', 'Answer4', ...] 
    datasets: [{ 
    label: ': votes', 
    data: ["5", "3", "0", "0", ...], 
    backgroundColor: 'rgba(0,102,204,0.2)', 
    borderColor: 'rgba(0,102,204,1)', 
    borderWidth: 1 
    }] 
}, 

感謝提前:)

回答

0

該函數將返回你需要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));

您可以用上面的函數ChartJS這樣的:

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

其他人也工作,但這是一個我用過的。 – Troutfisher

0

這fonction可以指望根據您的回答和結果你的答案:

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

,如果你只想要結果給chartjs(數據):

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

在這裏工作的jsfiddle https://jsfiddle.net/wanhe6rs/1/