Javascript 为charts.js构建动态数组
我在js中构建数组以传递到charts.js obj时遇到问题。我有以下数组Javascript 为charts.js构建动态数组,javascript,chart.js,Javascript,Chart.js,我在js中构建数组以传递到charts.js obj时遇到问题。我有以下数组 {"Questions":{"name":"Hello World"},"Options":{"inner":{"No":"723","Yes":"6","Maybe":"0"}}} 作为“响应”传递给下面的函数。我想循环遍历“内部”数组中的每个项目,并构建一个对象数组以传递到我的chart.js中 function drawChart(response){ var array = JSON.parse(re
{"Questions":{"name":"Hello World"},"Options":{"inner":{"No":"723","Yes":"6","Maybe":"0"}}}
作为“响应”传递给下面的函数。我想循环遍历“内部”数组中的每个项目,并构建一个对象数组以传递到我的chart.js中
function drawChart(response){
var array = JSON.parse(response)
var options = array['Options']['inner'];
for(var option in options){
var datasetValue = [];
datasetValue.push = {
value: parseInt(options[option]),
color: "#F7464A",
highlight: "#FF5A5E",
label: option
}
}
console.log(datasetValue);
var mydata = {
datasetValue
}
var pieData = [
{
value: 300,
color: "#F7464A",
highlight: "#FF5A5E",
label: "Red"
},
{
value: 50,
color: "#46BFBD",
highlight: "#5AD3D1",
label: "Green"
},
{
value: 100,
color: "#FDB45C",
highlight: "#FFC870",
label: "Yellow"
},
{
value: 40,
color: "#949FB1",
highlight: "#A8B3C5",
label: "Grey"
},
{
value: 120,
color: "#4D5360",
highlight: "#616774",
label: "Dark Grey"
}
];
var ctxOptions = {
responsive: true,
legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>",
showTooltips: false,
};
var pie_ctx = document.getElementById("donut").getContext("2d");
var chart = new Chart(pie_ctx).Doughnut(mydata, ctxOptions);
}
我在重建数组以匹配pieData数组格式时正在做什么?我认为datasetValue.push={正在重写datasetValue的array.push函数。请尝试datasetValue.push{以追加
此外,由于您在每次迭代中都会重置datasetValue,因此很可能只会将最后一个值添加到datasetValue中:
for(var option in options){
var datasetValue = [];
我认为datasetValue.push={正在重写datasetValue的Array.push函数。请尝试使用datasetValue.push{进行追加
此外,由于您在每次迭代中都会重置datasetValue,因此很可能只会将最后一个值添加到datasetValue中:
for(var option in options){
var datasetValue = [];
您的datasetValue只包含最后一项,因为您在for循环中实例化了它。每次进入for循环时,datasetValue都将被重新创建并设置为空数组,因此您只记录“last”项。您应该在for循环外实例化它
var datasetValue = [];
for(var option in options){
datasetValue.push = {
value: parseInt(options[option]),
color: "#F7464A",
highlight: "#FF5A5E",
label: option
}
}
您的datasetValue只包含最后一项,因为您在for循环中实例化了它。每次进入for循环时,datasetValue都将被重新创建并设置为空数组,因此您只记录“last”项。您应该在for循环外实例化它
var datasetValue = [];
for(var option in options){
datasetValue.push = {
value: parseInt(options[option]),
color: "#F7464A",
highlight: "#FF5A5E",
label: option
}
}
谢谢,这纠正了循环,所以我的数组现在有3个对象-但是,它似乎仍然不能使我的图表绘制。如果你能创建一个plunker或JSFIDLE演示,那就太好了。当然,我现在会尝试创建一个。谢谢,这纠正了循环,所以我的数组现在有3个对象-但是,它似乎仍然不能使我的图表绘制效果更好如果你能创建一个plunker或JSFIDLE演示。当然,我现在会尝试创建一个。谢谢你,伙计,你是对的,我已经把这个移到了for中。请看我的评论below@gsusonline看起来您仍在重写push函数。如果您尝试切换到datasetValue.push而不是datasetValue.push=,会发生什么情况?哦,我已经根据您的建议解决了这个问题在您的注释中,我将var datasetValue移到for循环之外,并使其成为.push{而不是.push={我猜你应该传递底线DoughnutdatasetValue,CtxOptions就这样!!!谢谢伙计,你完全正确,图表读取的是一个基本数组而不是对象数组。再次感谢Hanks伙计,你是对的,我将此移到了for中。请看我的评论below@gsusonline看来你还活着g push函数。如果您尝试切换到datasetValue.push而不是datasetValue.push=,会发生什么情况?哦,我已经修复了这个问题,根据您的评论,我将var datasetValue移到for循环之外,并使其成为。push{而不是.push={我猜你应该传递底线DoughnutdatasetValue,ctxOptions就是这样!!!谢谢伙计,你完全正确,图表读取的是基本数组而不是对象数组。再次感谢