Rolf B: mein erstes node object

Beitrag lesen

Hallo Henry,

das kommt davon, wenn man sein Problem nicht anständig beschreibt, sondern davon ausgeht, dass fremde Menschen die eigene Problemdomäne eh kennen. Die Leute machen dann irgendwelche Annahmen und liegen automatisch falsch. Deshalb auch meine Rückfrage von 11:06 Uhr.

Wir brauchen eine exakte Beschreibung der Eingabedaten und eine exakte Vorgabe, wie die Ausgabe aussehen soll. Andernfalls raten wir nur rum.

Es müsste so aussehen ... Klammer und Komma -Setzung eventuel falsch...

Nicht nur die. Das ist kein JavaScript, sondern Phantasiesyntax. Wie es Javascript-mäßiger aussehen könnte, zeige ich gleich. Der erläuternde Wiki-Artikel ist Objekte und ihre Eigenschaften.

Ich versuche mal einen Schritt in eine möglicherweise richtige Richtung. Deine Eingabedaten sind ein Array aus Objekten mit den Schlüsseln Maschinenname, plcvarname, format, offset und noch ein paar mehr? Mit Array- und Objektliteralen in JavaScript könnte man das so aufschreiben:

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?

Entstehen soll daraus ein Objekt, das als Literal geschrieben so aussähe?

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?

Die Eigenschaftsnamen "M1", "M2", "Drehzahl", "Temperatur" und so weiter sind dabei ein Risiko. Wenn deine DB-Abfrage einen Maschinennamen wie "Nummer 5" oder "NGC-1701" liefert, ist das KEIN gültiger Name. Objekteigenschaften mit solchen Namen sind zwar zulässig, sind aber nicht über die Punkt-Schreibweise erreichbar. In einem Objektliteral müssen sie dann in Anführungszeichen stehen, und beim Zugriff auf die Eigenschaft brauchst Du die Index-Notation. Steht alles im Abschnitt "Eigenschaften mit irregulären Namen" im verlinkten Wiki-Artikel.

Beim Erstellen von Eigenschaften mit variablen Namen brauchst Du eh die Index-Notation.

Rolf

--
sumpsi - posui - obstruxi