2016-04-26 16 views
0

を作るためにJSONデータを再コンパイルし、時には最大100、私は多くの行を持つJSONの結果を持っている場合は以下の行

レーベル:第1報値:1000 レーベル:パート2値:700 レーベル:その3値: 600 レーベル:その4値:500

...とそう

に私はそれが通常通り、トップ5の結果を示していますように、データを変更したいのですが、代わりに、残りの部分をリストで、それは合計値を変更し、ラベルを「その他」に変更します。

レーベル:その1値:1000 レーベル:その2値:700 レーベル:その3値:600 レーベル:その4値:500 レーベル:その5値:500 レーベル:他の値:25650

chart.jsのパイに渡す前に、javascriptでこれを行うことはできますか?またはこれを達成するためのよりよい方法がありますか?パイ

function chart1(branch, apitime){   
      $.ajax({ 
      url: jsonpath' + apitime + branch, 
      dataType: 'jsonp', 
      success: function (response) { 
       console.log (response); 
       var datachart = response; 
       var ctx2 = document.getElementById("chart-area2").getContext("2d"); 
       var myChart = new Chart(ctx2).Pie(datachart); 
      } 
     }); 
    } 

データがソートされており、私もこれを行うには、サーバー上のSQLを変更することができため

現在のコードでは、私は、正しい方法でそれを行うことですかわかりません。

JSONの例ここではhttp://pastebin.com/p3Y9mSX3

+0

を得るために、より一般的な行うことができます。あなたはあなたのデータを設定したバイブルですか? – potatopeelings

+0

いいえ、私は使用している機能を追加しました。データは、1行あたり2ビットのデータを持つ単なるJSONです。ラベルと値 – user3572565

+0

@potatopeelings確実に処理はサーバー側で行う必要がありますか?バックエンドで不平を言ってみましょう..? – Pogrindis

答えて

3
あなただけのチャートを作成する前に、あなたのデータを変更することができます

var top6 = datachart.slice(0,5) 
top6[5] = { 
    label: 'other', 
    value: datachart.slice(5).reduce(function(sum, data) { 
     return sum + data.value 
    }, 0) 
} 
var ctx2 = document.getElementById("chart-area2").getContext("2d"); 
var myChart = new Chart(ctx2).Pie(top6); 

JavaScriptでそれを行うには、より良いだろうトップNエントリ

var getTopN = function(dataArray, n) 
    var tops = dataArray.slice(0, n) 
    tops[n] = { 
    label: 'other', 
    value: dataArray.slice(n).reduce(function(sum, data) { 
     return sum + data.value 
    }, 0) 
    } 
    return tops 
} 

var top5 = getTopN(datachart, 5) 
var top10 = getTopN(datachart, 10) 
関連する問題