2017-03-02 3 views
0

Ich versuche, Chart.js verwenden, um unbekannte JSON-Daten anzuzeigen (der einzige Teil der Daten I tun wissen ist, dass es "Zeit" enthalten wird).Wie JSON-Daten in Arrays unbekannten Namens zu wrangeln

Ich habe mehrere Datensätze, so wie bekomme ich Daten aus diesen Formaten ...:

Datensatz 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 }, ...] 

Datensatz 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 }, ...] 

... zu Dieses Format (für Datensatz1):

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

... oder dieses Format (für 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 ...] 

Ich weiß nicht, vor der Zeit, was die Tasten (z Volt, Ampere, Level) werden, so dass ich keine Arrays deklarieren kann.

Ich hoffe, dass jemand helfen kann.

+1

Sie nutzen könnten [Object.keys()] (https://developer.mozilla.org/en/ docs/Web/JavaScript/Referenz/Globale_Objekte/Objekt/Schlüssel), um eine Liste der Schlüssel zu erhalten, die das Objekt hat, obwohl ich nicht weiß, wie es unterstützt wird. Ein Beispiel wäre 'Object.keys (dataset1 [0])', das '[" time "," volts "," amps "] zurückgibt.' – George

+0

@George: Ich werde mir das jetzt ansehen. Danke für die schnelle Antwort :-) – simonl

+0

Nun, ich wusste nichts über Object.keys (oder Object.values ​​oder Object.entries - interessant), aber ich kann immer noch nicht sehen, wie die Daten [xxx] -Arrays zu erstellen: - ( – simonl

Antwort

0

Sie können dies erreichen einige dynamische Arrays:

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]); 
    } 
    } 
} 

Arbeitsbeispiel: https://jsfiddle.net/mspinks/zhuxz2z6/1/

Verwandte Themen