Moin Henry,
Ich möchte jetzt in einer Schleife das Objekt füllen. Dazu habe ich nachfolgenden Code
result.forEach(function (zeile) { sps_datenpunktliste = { [aktiver_spsname]: { [zeile.spsvarname]: { datentyp: zeile.datentyp, db: zeile.db, offset: zeile.offset, bit: zeile.bit, format: zeile.format, nachkomma: zeile.nachkomma } } } });
Vielleicht möchtest Du dich noch einmal genauer mit der JavaScript-Syntax auseinandersetzen. Wir haben ein ganzes Wiki dazu. Kurz beschrieben macht Dein Code folgendes:
In jedem Schleifendurchlauf wird ein Objekt sps_datenpunktliste
angelegt, das seine Attributnamen aus den Variablen aktiver_spsname
und zeile.spsvarname
nimmt. Erstere Variable scheint dabei global und konstant für jede Zeile zu sein.
Dies funktioniert in so weit, das jede Zeile im Objekt überschrieben wird, was ich auch verstehe, da das Objekt komplett neu beschrieben wird.
Trotz intensiver suche im Netz habe ich nichts passendes zum Thema "dynamische beschreiben verschachtelter Objekte" gefunden. 😉
Vielleicht liegt es daran, dass Dein Suchbegriff kein Fachbegriff (in JavaScript) ist und nicht im Entferntesten beschreibt, was Du vermutlich eigentlich tun möchtest: Objekte um Eigenschaften erweitern. Es ist ja nicht so, als hätte das Rolf bereits in seiner ersten Antwort beschrieben …
Mein Ansatz wäre nun gewesen
result.forEach(function (zeile) { sps_datenpunktliste = aktiver_spsname; sps_datenpunktliste[aktiver_spsname] = zeile.spsvarname; sps_datenpunktliste[aktiver_spsname][zeile.spsvarname] = { datentyp: zeile.datentyp, db: zeile.db, offset: zeile.offset, bit: zeile.bit, format: zeile.format, nachkomma: zeile.nachkomma } });
Ich kann den Key "aktiver_spsname" beschreiben ... soweit funktioniert es. Dann müsste ich eigentlich eine Stufe tiefer kommen und "zeile.spsvarname" beschreiben können ... Pustekuchen ...
Dein Code macht folgendes:
- Lege das Objekt
sps_datenpunktliste
neu als String an. - Erweitere den String um das Attribut mit dem Namen, der in
aktiver_spsname
steht und weise diesem den String auszeile.spsvarname
zu. - Erweitere diesen String um das Attribut mit dem Namen aus
zeile.spsvarname
und weise diesem ein neues Objekt zu.
Ich könnte mir vorstellen, dass das Weglassen der ersten beiden Code-Zeilen in der Schleife und entsprechend korrektes Initialisieren von sps_datenpunktliste
bereits ausreicht um dort hin zu kommen, wo Du eigentlich hinmöchtest.
Viele Grüße
Robert