Robert B.: mein erstes node object

Beitrag lesen

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:

  1. Lege das Objekt sps_datenpunktliste neu als String an.
  2. Erweitere den String um das Attribut mit dem Namen, der in aktiver_spsname steht und weise diesem den String aus zeile.spsvarname zu.
  3. 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