der henry: mein erstes node object

Beitrag lesen

Hallo,

eingabe = [
   { Maschinenname: "M1", plcvarname: "Drehzahl", format: "double", offset: 220, dings: 17, bums: 99 },
   { Maschinenname: "M1", plcvarname: "Temperatur", format: "integer", offset: 128, dings: 11, bums: 77 },
   { Maschinenname: "M1", plcvarname: "Oeffnung", format: "dword", offset: 132, dings: 13, bums: 47 },
   { Maschinenname: "M2", plcvarname: "Drehzahl", format: "double", offset: 220, dings: 17, bums: 99 },
   { Maschinenname: "M2", plcvarname: "Temp_1", format: "integer", offset: 128, dings: 11, bums: 77 },
   { Maschinenname: "M2", plcvarname: "Temp_2", format: "integer", offset: 132, dings: 13, bums: 47 }
];

Soweit richtig geraten?

Ja, das ist richtig

datenpunktliste = {
   M1: { 
      Drehzahl: { format: "integer", offset: 220, dings: 17, bums: 99 },
      Temperatur: { format: "integer", offset: 128, dings: 11, bums: 77 },
      Oeffnung: { format: "dword", offset: 132, dings: 13, bums: 47 },
   },
   M2: {
      Drehzahl: { format: "integer", offset: 220, dings: 17, bums: 99 },
      Temp_1: { format: "integer", offset: 128, dings: 11, bums: 77 },
      Temp_2: { format: "integer", offset: 132, dings: 13, bums: 47 },
   },
};

Ist das richtig?

Ja richtig, damit kann ich gut leben !! 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
                            }
                       }
               }
});

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. 😉

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 ...

Hier komm ich nicht weiter ...