2017-10-07 98 views
1

我有一個json對象,如下所示。我會把它想基於特定屬性GROUPBY說「SEX」,並把它傳遞給highcharts這樣,我只有一個X軸類別爲「TIME」和圖應該如下:enter image description hereJSON Highcharts的數據格式

[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, 
{"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, 
{"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, 
{"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, 
{"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, 
{"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937},] 

我們如何實現它爲上述JSON格式.. ??

回答

2

首先,你應該使用以filter方法來獲得兩個數組:一個用於male,另一個用於female實體。

然後使用爲了map方法來獲得datesfemaleRatesmaleRates陣列

let array=[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, {"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, {"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, {"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, {"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, {"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937}]; 
 
let males=array.filter(a=>a.SEX=='MALE'); 
 
let females=array.filter(a=>a.SEX=='FEMALE'); 
 
let dates=males.map(a=>a.TIME); 
 
let malesRates=males.map(a=>a.RATE); 
 
let femaleRates=females.map(a=>a.RATE); 
 
console.log(dates); 
 
console.log(malesRates); 
 
console.log(femaleRates);

最後一步是在你圖表來顯示數據。

let array=[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, {"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, {"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, {"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, {"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, {"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937}]; 
 
let males=array.filter(a=>a.SEX=='MALE'); 
 
let females=array.filter(a=>a.SEX=='FEMALE'); 
 
let dates=males.map(a=>a.TIME); 
 
let malesRates=males.map(a=>a.RATE); 
 
let femaleRates=females.map(a=>a.RATE); 
 
Highcharts.chart('container', { 
 
    xAxis: { 
 
     categories:dates 
 
    }, 
 
    series: [{ 
 
     name: 'Males', 
 
     data: malesRates 
 
    }, { 
 
     name: 'Females', 
 
     data:femaleRates 
 
    }], 
 

 
    responsive: { 
 
     rules: [{ 
 
      condition: { 
 
       maxWidth: 500 
 
      }, 
 
      chartOptions: { 
 
       legend: { 
 
        layout: 'horizontal', 
 
        align: 'center', 
 
        verticalAlign: 'bottom' 
 
       } 
 
      } 
 
     }] 
 
    } 
 

 
});
<script src="https://code.highcharts.com/highcharts.js"></script> 
 
<script src="https://code.highcharts.com/modules/series-label.js"></script> 
 
<script src="https://code.highcharts.com/modules/exporting.js"></script> 
 

 
<div id="container"></div>

+0

感謝您的回答。我還有一個問題,實際上,我的JSON數據有很多地區[亞利桑那州,愛達荷州,紐約州,澳大利亞....],我想創建單獨的數據系列,並將其輸入到高級圖表中。有沒有其他方法可以減少爲所有人編寫地圖方法(其中200人)。 – MoChen