2016-07-09 8 views
1

角度jでグラフ表現を実装しようとしています。JSONオブジェクトを使ったAngular jsのグラフ

http://jtblin.github.io/angular-chart.js/

私はシンプルなチャートを実装することができましたが、私は表現する、以下のデータを持っています。これはJSON形式です。 JSONを配列に変換してチャートとして表現する方法については、私は助けが必要です。以下は、JSON

[{"value": {"DE":2,"NP":20,"BD":28,"TW":1}, 
    "end_time":"2016-07-05T07:00:00+0000"}, 
{"value":{"DE":5,"NP":11,"BD":22,"BE":2,"FJ":2}, 
    "end_time":"2016-07-06T07:00:00+0000"}, 
{"value":{"DE":5,"NP":24,"BD":29}, 
    "end_time":"2016-07-07T07:00:00+0000"}] 

である私は、フォーマット、私は私が私のJSONオブジェクトを反復処理し、配列を作成する必要があることを理解

$scope.labels = ["January", "February", "March", "April", "May", "June","July"]; 
$scope.series = ['Series A', 'Series B']; 
$scope.data = [ 
[65, 59, 80, 81, 56, 55, 40], 
[28, 48, 40, 19, 86, 27, 90] 
]; 

に変換しようとしています。

私の質問は、それぞれのJSONオブジェクトに異なるラベルがあることです。どのように私はそれが価値のそれぞれにおいて、すべてのラベルを持つ配列を作成し、まだこれは、より良い提案くださいangularjsに異なるライブラリやグラフを用いて達成することができる場合

$scope.labels = ["DE", "NP", "BD", "TW", "BE", "FJ"]; 
$scope.series = ["2016-07-05T07:00:00+0000","2016-07-06T07:00:00+0000","2016-07-07T07:00:00+0000"] 
$scope.data = [ [2,20,28,1,0,0], 
       [5,11,22,0,2,2], 
       [5,24,29] 
       ] 

の下counts.Likeの順序を維持変換します

+0

ですので、問題は何ですか? Array.prototype.forEach、Object.keys + forEachの助けを借りて非常に難しいはずはありません。 – dfsq

+0

問題は配列の要素ごとにラベルの値が異なることです。最初のように、BEとFJのラベルはありません。私はJavaScriptにも非常に新しいです。 – user2934433

答えて

2

あなたは何か試したことがありますか?あなたは解決策を見せていませんでした。とにかく、ここで可能な実装が

var source = [ 
 
    {"value": {"DE":2,"NP":20,"BD":28,"TW":1}, 
 
    "end_time":"2016-07-05T07:00:00+0000"}, 
 
    {"value":{"DE":5,"NP":11,"BD":22,"BE":2,"FJ":2}, 
 
    "end_time":"2016-07-06T07:00:00+0000"}, 
 
    {"value":{"DE":5,"NP":24,"BD":29}, 
 
    "end_time":"2016-07-07T07:00:00+0000"} 
 
] 
 
var $scope = {}; 
 
$scope.labels = []; 
 
$scope.data = []; 
 
$scope.series = []; 
 

 

 
source.forEach(function(item){ 
 
    $scope.series.push(item.end_time) 
 

 
    var values = [] 
 
    Object.keys(item.value).forEach(function(key) { 
 
    if ($scope.labels.indexOf(key) === -1) { 
 
    $scope.labels.push(key) 
 
    } 
 
    values.push(item.value[key]) 
 
    }) 
 
    $scope.data.push(values) 
 
}) 
 
console.log($scope)

+0

間違いなく私はこのようなコンパクトなコードを書いていませんが、存在しないラベルについては、私の基本的な問題だった値0を持つ必要があります。あなたは私を助けてくれますか?答えをありがとう。私は、すべてのラベルを持つグローバルリストを作成し、それから反復する必要があると思います。キーが存在しない場合、ゼロを押します。 – user2934433

+0

うん、まさに。 indexOfを使ってリストにないかどうかを調べるだけです。乾杯 – Ladmerc

関連する問題