2017-03-02 72 views
0

我試圖使用Chart.js來顯示未知的JSON數據(我知道的只有部分數據它將包含「time」)。如何將JSON數據轉換爲未知名稱的數組

我有幾個數據集,所以我如何才能從這些格式的數據... ...:

數據集1:

dataset1 = [ { "time": "2017-03-02 09:00", "volts": 10, "amps": 4.5 },{ "time": "2017-03-02 09:10", "volts": 9.87, "amps": 4.15 }, ...] 

數據集2:

dataset2 = [ { "level": 1.23, "time": "2017-03-02 09:00", "volts": 3.5 }, { "level": 1.56, "time": "2017-03-02 09:10", "volts": 3.6 }, ...] 

...到此格式(對於數據集1):

data[ "time" ] = [ "2017-03-02 09:00", "2017-03-02 09:10", ...] 
data[ "volts" ] = [ 10, 9.87 ...] 
data[ "amps" ] = [ 4.5, 4.15 ...] 

......或本格式(dataset2):

data[ "time" ] = [ "2017-03-02 09:00", "2017-03-02 09:10", ...] 
data[ "level" ] = [ 1.23, 1.56 ...] 
data[ "volts" ] = [ 3.5, 3.6 ...] 

我不知道提前哪些鍵(例如伏特,安培,水平)將會是,所以我無法宣佈任何陣列推入。

我希望有人能幫忙。

+1

你可以使用[Object.keys()](https://developer.mozilla.org/en/ docs/Web/JavaScript/Reference/Global_Objects/Object/keys)來獲取對象所具有的鍵的列表,但我不知道它是如何被支持的。一個示例調用將會返回'[「time」,「volts」,「amps」]'Object.keys(dataset1 [0])'' – George

+0

@George:我現在來看看。感謝您的迅速反應:-) – simonl

+0

嗯,我不知道Object.keys(或Object.values或Object.entries - 有趣),但我仍然無法看到如何創建數據[xxx]數組: - ( – simonl

回答

0

可以使用一些動態數組實現這一點:

var dataset1 = [ { "time": "2017-03-02 09:00", "volts": 10, "amps": 4.5 },{ "time": "2017-03-02 09:10", "volts": 9.87, "amps": 4.15 }]; 
var dataset2 = [ { "level": 1.23, "time": "2017-03-02 09:00", "volts": 3.5 }, { "level": 1.56, "time": "2017-03-02 09:10", "volts": 3.6 }]; 
var data = []; 
var datasets = [dataset1,dataset2]; 
for (var i in datasets) { 
    var dataset = datasets[i]; 
    for (var j in dataset) { 
    var d = dataset[j]; 
    for (var k in d) { 
     if (!data[k]) data[k] = []; 
     data[k].push(d[k]); 
    } 
    } 
} 

工作實施例:https://jsfiddle.net/mspinks/zhuxz2z6/1/