Rolf B: mein erstes node object

Beitrag lesen

Hallo Henry,

ich kann Dir nur ansatzweise folgen. Mir scheint, mit plcname meinst Du einen beliebigen Schlüsselbegriff, wie z.B. "M1".

Diese Anweisung

Object.assign(datenpunktliste, {"plcname": act_plcname});

erzeugt aber in datenpunktliste lediglich eine Eigenschaft namens plcname und speichert darin den Wert von act_plcname. Genausogut könntest Du

datenpunktliste.plcname = act_plcname;

schreiben. Object.assign kopiert einfach die enumerierbaren Eigenschaften eines Objekts in ein anderes.

Wenn Du eine Eigenschaft erzeugen möchtest, deren Name in act_plcname steht, musst Du die Notation mit eckigen Klammern verwenden:

datenpunktliste[act_plcname] = ...;

Und in Datenpunktliste möchtest Du unter unterschiedlichen Schlüsseln (also act_plcname-Werte) dann Informationsobjekte zu diesem plcname hinterlegen? Wie kommst Du im Schleifendurchlauf an diese Werte heran? Das zeigt dein Code nicht.

Und eventuell ist ein Objekt auch gar nicht die richtige Lösung für Dich. Die Datenstruktur, die Du hier zu planen scheinst, ist eine Map. Und dafür gibt's in JavaScript die Map-Klasse. Der Wiki-Artikel steigt etwas abstrakt ein, lies einfach, er enthält einige Beispiele.

datenstrukturliste = new Map();
datenstrukturliste.set(act_plcname, { plcvarname: zeile.spsvarname,
                                  type: zeile.datentyp,
                                    db: zeile.db });

plcdaten = datenstrukturliste.get("M1");

alleKeys = Array.from(datenstrukturliste.keys());

Früher gab es diese Klasse nicht und man hat Objekte als Maps missbraucht. Aber Node.js sollte Maps kennen.

Rolf

--
sumpsi - posui - obstruxi