我有地图上这种形式显示许多图表具有相同源的JavaScript的数据(地图(键,值))
Object{485:Array[4],2072:Array[4],9665:Array[3]...}
我想显示每个键的图表的。
我有一个例子是类似我正在寻找我试图在许多图表,显示了我的价值观:在这个例子中,我的关键是:car_id
第一步:排序我的阵列来获得我的钥匙地图。它工作正常。但第二个不工作...我想显示一个基于car_id和每个面板bootstrap每个数据的图表... 我做错了什么?
谢谢
<html >
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
</head>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript --><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.0/Chart.min.js"></script>
<script src=" https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.0/Chart.min.js"></script>
<body >
<div >
<div class="panel panel-default">
<div class="panel-heading">Panel heading without title</div>
<div class="panel-body">
<canvas id="myChart" width="400" height="400"></canvas>
</div>
</div>
</div>
</body>
<script>var json = {
'cars': [{
"car_id": "1",
"price": "925",
"full_option": "EEEE"
}, {
"car_id": "1",
"price": "990",
"full_option": "DDDDD"
}, {
"car_id": "2",
"price": "500",
"full_option": "FFF"
}, {
"car_id": "2",
"price": "900",
"full_option": "GGGGGGG"
}, {
"car_id": "4",
"price": "900",
"full_option": "JJJ"
}]
};
var car_array = json.cars.reduce((prev, t, index, arr) => {
if (typeof prev[t.car_id] === 'undefined') {
prev[t.car_id] = [];
}
prev[t.car_id].push(t);
return prev;
}, {});
Object.keys(car_array).forEach(i => {
var array_of_cars_with_same_id = car_array[i];
for (var i=0; i<=array_of_cars_with_same_id.length-1;i++){
console.log(array_of_cars_with_same_id[i].price);
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: [array_of_cars_with_same_id[i].full_option],
datasets: [{
label: '# of Votes',
data: [array_of_cars_with_same_id[i].price]
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
}
console.log("AAAAAAAAAAAAA");
});
</script>
是'Object {485:Array [4],2072:Array [4],9665:Array [3] ...}'应该和变量'json'一样吗?代码是否为'Object.keys(car_array).forEach(i => {'你指的是'第二个代码不工作'?什么是不工作? – whipdancer
@whipdancer Object {485:Array [4 ],2072:Array [4],9665:Array [3] ...}与变量json不同。变量json是一个与“Object {485:Array [4],2072:Array [4],9665:Array [3] ...}”类似的小例子,它太大了。这就是为什么我选择了一个更简单的例子。不工作的部分是应该为每个键创建图表的部分(在for循环中)。我只得到了所有按键的图表。 – John
请提供'对象{485:数组[4],2072:数组[4],9665:数组[3] ...}' - 一个小版本。 3个键或类似的东西,以便有一个有代表性的样本 - 或者构建您的样本,以便它完全模仿您正在处理的数据。 – whipdancer