2017-06-21 1 views
1

Ich versuche, eine Suite von Histogrammen für eine Website zu erstellen. Ich möchte eine gemappte Variable erstellen, die nur die Geschwindigkeitsdaten herauszieht, wenn der Charakter einen bestimmten Rang hat. Mein Datensatz sieht wie folgt aus (ich habe die relevanten Variablen fett gedruckt, die ich will, beschäftigen):Verwenden einer if-Anweisung in Verbindung mit dem Erstellen einer zugeordneten Variablen (Javascript)

myData = [{name: 'Maru', Rang: 'L', Geschwindigkeit: 117,6}, {Name: 'Kharg', Rang: 'G', Geschwindigkeit: 114.4} ... und so weiter ...]

Ich versuche eine if-Anweisung zu verwenden (Pseudocode: if myData.rank = 'L ‘...) in Verbindung mit der folgenden:

var speedData = myData.map (function (i) {return i.speed;})

Allerdings bin ich kein Glück haben. Hier ist ein Beispiel von dem, was ich versuche, (unter anderem, aber ich vermute, dass dies in der Nähe von Arbeits):

var lightData = myData.map(function(i){ 
     if (i.rank == 'L'){ 
      return i.speed;} 
      }) 

Ist dies möglich, mit nur js und D3? Ich vermute, dass etwas wie Django das leichter machen könnte, aber es ist eine Aufgabe, die auf js und D3 beschränkt ist.

Ich weiß, dass, wenn meine Datenmenge kleiner war, ich könnte alle Ränge manuell trennen und dann eine Zusammenführung, wenn ich alle Daten auf einmal ausführen müssen. Mit den Daten, die ich habe, ist das jedoch nicht praktikabel.

Antwort

1

Mit einfachem Javascript können Sie einen verketteten Ansatz verwenden, indem Sie zuerst filtern und dann den Wert zuordnen, den Sie benötigen.

var result = myData 
     .filter(function (o) { return o.rank === 'L'; }) 
     .map(function (o) { return o.speed; }); 
Verwandte Themen