Announcement

Collapse
No announcement yet.

Mehrdimensionales Array Bezeichner + Zähler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrdimensionales Array Bezeichner + Zähler

    Hallo,
    ich müsste ein Mehrdimensionales Array erstellen, bei welchem der erste Wert immer fix bleibt, und der 2. Wert hochgezählt werden soll.

    1-dimensional sieht das ganze wie folgt aus:


    //Zeitverzögerung einer Nachricht mit Quittierung
    var TimeStamp = new Date();
    var Verzoegerung = flow.get('Reihungszeit')

    flow.set('Textnachricht',msg.message);

    phonenumbers=flow.get('ID');

    i=flow.get("Zähler")||0;



    // ALARM ON MELDUNG IN KASKADE
    if (msg.alarmstatus == 1)
    {
    msg1 = {Kaskade:"N"+(i+1),delay:Verzoegerung,message:flow .get('Textnachricht'),alarmstatus:msg.alarmstatus, topic:msg.topic};
    msg2 = {rufnummer: phonenumbers[i],message: ("ALARM EIN: " + flow.get('Textnachricht') + " " + TimeStamp.toLocaleString('de-DE')),alarmstatus:msg.alarmstatus,topic:msg.topic} ;
    if(i<phonenumbers.length-1)
    {
    flow.set("Zähler",i+1);


    }
    else
    {
    flow.set("Zähler",0);
    context.set("idall",true);


    }
    return[msg1,msg2];
    }


    Nun sollen hier verschiedenste Alarmtexte erhalten werden, und jeder dieser Alarmtexte benötigt dann seinen eigenen Zähler. Leider habe ich mit mehrdimensionalen Arrays noch nicht all zu viel Erfahrung, und jeder Versuch scheiterte bisher. Könnt ihr mir helfen?

    LG

  • #2
    Mir ist der Quelltext unverständlich.
    Wo ist bei 1- eindimensional irgendwas eindimensional?

    Erstelle ein Objekt Alarmtexte mit den Eigenschaften Text und Zähler und zähle diesen hoch. Alle diese Objekte kannst du dann in einer Liste zusammenfassen
    Zuletzt editiert von Christian Marquardt; 06.11.2021, 15:20.
    Christian

    Comment


    • #3
      Also jetzt derzeit zählt er ja mit jedem Aufruf "i" hoch und fragt dann von phonenumbers die jeweilige Nummer ab.
      Nachher soll er jedoch zB phonenumbers[alarmtext][i] haben. sprich er fragt die "Telefonnummer" von zB "Spannungsabfall" beim ersten Durchlauf, beim 2. Durchlauf usw ab [i] soll hierbei den Durchlauf dieses Alarmtextes anzeigen.

      Comment


      • #4
        Erstelle ein Objekt Alarmtexte mit den Eigenschaften Text und Zähler und zähle diesen hoch. Alle diese Objekte kannst du dann in einer Liste zusammenfassen
        Christian

        Comment


        • #5
          Könntest du mir hier evtl die Methode zeigen wie genau du das meinst?

          Comment


          • #6
            alarm1 = {text:"Text1111", zaehler:0};
            alarm2 = {text:"Text2222", zaehler:1000};
            oder
            alarm1=new Object();
            alarm1.text="Text1111";
            alarm1.zaehler=0;

            var myAlarmList = new Array();
            myAlarmList.push(alarm1);
            myAlarmList.push(alarm2);

            Die Liste kannst du nun durchgehen....
            Zähler des 1. Alarm ausgeben:
            myAlarmList[0].zaehler+1



            Christian

            Comment


            • #7
              Ok nun hab ich verstanden wie du es meintest, mein Prob ist jedoch, ich weiß vorab nicht wieviele Alarme geplant sind.... können genausogut >100 Alarme werden, oder eben nur 10, sprich ich suche hier nach einer "flexiblen" Lösung.

              Das ganze ist in NodeRed (ist ein Javascript basierendes Tool zB auf einer SPS Steuerung), und hier erhalte ich mittels MQTT Alarme, welche dann mittels Telegram an die Nutzer (diese stehen in einem Array von "Telefonbuch") weitergesendet werden sollen.
              Und zwar zuerst 1. Nutzer, Pausezeit --> wenn nicht quittiert wurde --> 2.Nutzer usw.

              Nun soll es dann so funktionieren.

              1. Alarm kommt -->1. Nutzer wird alarmiert.... 2.Nutzer
              Sollte dazwischen ein neuer(/anderer) Alarm kommen, soll diese Nachricht wieder zuerst dem ersten Nutzer gesendet werden, währenddesse wird jedoch der zB 3. Nutzer mit dem 1. Alarm benachrichtigt.

              Deswegen brauche ich eben auch diesen Zusammenhang zwischen alarmtext und einem zugehörigen Zähler.

              Sry das ich jetzt erst die Anwendung im Detail erkläre, hoffe ich habe es soweit verständlich erklärt

              LG

              Andi

              Comment


              • #8
                Mit
                for (let i = 0; i < 10; i++) {
                alarm=new Object();
                alarm.text="Text1111";
                alarm.zaehler=i;
                myAlarmList.push(alarm);
                }
                werden 10 (jetzt hier gleicher Text, unterschiedlicher Zähler) Alarme dynamisch zur Laufzeit angelegt
                Zuletzt editiert von Christian Marquardt; 07.11.2021, 08:17.
                Christian

                Comment

                Working...
                X