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
Die Sprachen C und APL erlauben einzeilige Programme beliebiger Komplexität. JavaScript hat den Ehrgeiz, es ihnen gleich zu tun. ↩︎