动态数组javascript

时间:2016-04-23 16:47:43

标签: javascript chart.js

我在javascript中有一个简单的疑问。

我有服务器加载数组:

var dados = [{'ano':2016,'id':1,'mes':1,'valor':87},{'ano':2016,'id':2,'mes':2,'valor':17},{'ano':2016,'id':3,'mes':3,'valor':26}]

获得我需要的值后:

var valores = new Array();
for( var i=0; i < dados.length; i++) {
valores.push(dados[i].valor); 
}

现在是疑问。如何将值加载到Chart.js?

var lineChartData = {
datasets : [{
    //ommited others configs..
    data :  valores (I would like load de values of valores here)      
}]}

2 个答案:

答案 0 :(得分:1)

valores var必须是一个对象而不是常规数组类型。所以它应该是这样的:

enter image description here

请看以下代码:

&#13;
&#13;
<html>
<body>
<canvas id='myChart'></canvas>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js'></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.1.1/Chart.js"></script>
<script>
	var dados = [
		{'ano':2016,'id':1,'mes':1,'valor':87},
		{'ano':2016,'id':2,'mes':2,'valor':17},
		{'ano':2016,'id':3,'mes':3,'valor':26}
	];
	var valores = {
		// labels like month (mes/mês - I noticed you're a portuguese speaker)
		labels: [], 
		datasets: [ 
			{label: null, data: []}
			//more items here whether you want
		]        
	};
	
	for (var index in dados) {
		currData = dados[index];
		valores.labels.push('Mês ' + currData['mes']);
		valores.datasets[0]['data'].push(currData['valor']);
	}
	
	var ctx = $("#myChart").get(0).getContext("2d");
	var myLineChart = new Chart(ctx).Line(valores);
</script>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

不,图表会将数组作为输入,其中包含对象。数据集不能是数组,它应该是一个对象的集合。

您的JSON数据应该像

var lineChartData = {
    data : [{
      'valor':87
    },{
      'valor':22
    }]
}

现在看看你是否正确将上述JSON传递给图表。 希望这能解决你的问题。