Antwort an „Rolf B“ verfassen

Hallo der henry,

bitte beachte auch die übrige Diskussion im Thread, da sind einige wichtige Details drin.

Zu deinem Ansatz:

Man kann es mit entries machen, aber ich würde ein Array aller Keys mit

const dataKeys = Object.getOwnPropertyNames(graphData[0])
                       .filter(n => n !== "datetime");

erzeugen (Umbruch vor .filter nach Belieben, ich hab's für die Forenlesbarkeit gemacht).

Das kannst Du dann einfach mit foreach durchlaufen und brauchst keine Abfrage mehr in der Schleife.

Um im Objekt entry auf die Eigenschaft zuzugreifen, deren Name in der Variablen key steht, verwendest Du die Schreibweise mit eckigen Klammern, die auch bei Arrays genutzt wird: entry[key].

Solange nur stumpf die Eigenschaftswerte kopierst, lässt sich das alles zu einem "Einzeiler" verdichten[1], den ich aber lieber auf 9 Zeilen verteile 😉:

const dataCurves = 
   Object.getOwnPropertyNames(graphData[0])
   .filter(key => key !== "datetime")
   .map(
      key => graphData.map(
                        entry => ({ x: entry.datetime,
                                    y: entry[key] 
                                  })
                      )
   );

ABER

Wenn Du nicht weißt, welche Werte in graphData sind, hast Du ein Problem. Du hast unterschiedliche Datentypen, die Du ggf. aufbereiten musst. Du musst eine Legende und eine Y-Achsenbeschriftung erstellen. Die Frage ist auch, welchen Sinn es hat, Datumswerte (daten5) auf der Y-Achse eines Diagramms darzustellen, dessen X-Achse ein Timestamp ist.

D.h. aus meiner Sicht kannst Du gar nicht stumpf über die Keys der Datenpunkte latschen, da muss mehr Intelligenz hinein.

Rolf

--
sumpsi - posui - obstruxi

  1. Die Sprachen C und APL erlauben einzeilige Programme beliebiger Komplexität. JavaScript hat den Ehrgeiz, es ihnen gleich zu tun. ↩︎

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen