Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. array [string] = variable

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    array [string] = variable

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Malaus last edited by

      Hallo Zusammen,

      ich möchte gerne mit dem Array week das Objekt monday in einer for Schleife aufrufen.
      Problem dabei ist, das week mir einen String zurückgibt. Daher bin ich auf die Idee gekommen mit einem JSON.parse die Anführungszeichen zu entfernen. Leider funktioniert das nicht.

      const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
      
      let monday = {
          tag: 1,
          1: {
              startTime: pfad + week[1] + start,
          },
      
      
      for (schritt = 0; schritt < week.length; schritt++) {
          
              //createTime(week[schritt][1], getState(week[schritt][1].startTime).val)
              //createTime(week[schritt][2], getState(week[schritt][2].startTime).val)
              
              console.log('test1' + getState(week[schritt][1].startTime).val);
              console.log('test2' + getState(monday[1].startTime).val);
              console.log('test3 ' + getState(JSON.parse(week[schritt])[1].startTime).val);
            }
      

      Bei 'test1' erhalte ich ein null
      Bei 'test2' erhalte ich 14:45
      und 'test3' funktioniert nicht

      Wo liegt hier der Fehler?

      paul53 Asgothian 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Malaus last edited by paul53

        @malaus
        Mit solchen Bruchstücken aus einem Skript kann niemand etwas anfangen.
        Wie sieht die ID-Struktur der Datenpunkte aus, die eingelesen werden sollen?

        M 1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @Malaus last edited by

          @malaus sagte in array [string] = variable:

          Wo liegt hier der Fehler?

          du willst mit den Einträgen im Array deine Variablen addressieren. Dazu musst du entweder im array nicht die Namen sondern direkt die Objekte hinterlegen

          let monday = {
              tag: 1,
              1: {
                  startTime: pfad + week[1] + start,
              },
          
          const week = [sunday, monday, tuesday, wednesday, thursday, friday, saturday];
           
          

          oder dir ein Objekt schaffen welches das Ummappen übernimmt:

          const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
          
          let monday = {
              tag: 1,
              1: {
                  startTime: pfad + week[1] + start,
              },
          
          
          const weekobject = {
            monday: monday,
          }
          
          

          im ersten fall sollte direkt

          console.log('test1' + getState(week[schritt][1].startTime).val);
          

          funktionieren.

          im 2. Fall brauchst du

          console.log('test1' + getState(weekobject[week[schritt]][1].startTime).val);
          

          Allerdings erscheinen beide Konstrukte unnötig kompliziert. Wie @paul53 geschrieben hat ist es einfacher zu helfen wenn klarer ist was du eigentlich erreichen willst.

          A.

          M 1 Reply Last reply Reply Quote 1
          • M
            Malaus @paul53 last edited by

            @paul53
            Der Datenpunkt startTime besteht aus:
            pfad = javascript.0.
            week = monday
            start = .startTime

            und wird so erstellt:

            createState('javascript.0.monday.startTime', 
                {
                    read: true, 
                    write: true, 
                    desc: "Beschreibung", 
                    type: "string", 
                
            });
            
            paul53 1 Reply Last reply Reply Quote 0
            • M
              Malaus @Asgothian last edited by

              @asgothian vielen Dank für diese Lösung!

              Der Hintergrund ist der:

              Ich möchte gerne die Fahrzeiten aus dem Worx Adapter auslesen und entsprechend einen Scheduler starten, der mir 1h vor Abfahrt die Wichtung der Zone ändert.

              Dazu habe ich mir die ganzen Wochentage als Objekte aufgebaut und lasse die Zeiten per for schleife einmalig auslesen alles andere soll nur angepasst werden, wenn sich die Zeiten ändern.

              Ich bin da noch viel am probieren, aber hier mal das bisherige Skript:

              const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
              
              let monday = {
                  tag: 1,
                  1: {
                      borderCut: pfad + week[1] + border,
                      startTime: pfad + week[1] + start,
                      workTime: pfad + week[1] + work,
                      wT_min: pfad2 + week[1] + '.wT_min',
                      hour: pfad2 + week[1] + '.hour',
                      min: pfad2 + week[1] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[1] + '2' + border,
                      startTime: pfad + week[1] + '2' + start,
                      workTime: pfad + week[1] + '2' + work,
                      wT_min: pfad2 + week[1] +  '2' + '.wT_min',
                      hour: pfad2 + week[1]+  '2' + '.hour',
                      min: pfad2 + week[1] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              let tuesday = {
                  tag: 2,
                  1: {
                      borderCut: pfad + week[2] + border,
                      startTime: pfad + week[2] + start,
                      workTime: pfad + week[2] + work,
                      wT_min: pfad2 + week[2] + '.wT_min',
                      hour: pfad2 + week[2] + '.hour',
                      min: pfad2 + week[2] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[2] + '2' + border,
                      startTime: pfad + week[2] + '2' + start,
                      workTime: pfad + week[2] + '2' + work,
                      wT_min: pfad2 + week[2] +  '2' + '.wT_min',
                      hour: pfad2 + week[2]+  '2' + '.hour',
                      min: pfad2 + week[2] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              let wednesday = {
                  tag: 3,
                  1: {
                      borderCut: pfad + week[3] + border,
                      startTime: pfad + week[3] + start,
                      workTime: pfad + week[3] + work,
                      wT_min: pfad2 + week[3] + '.wT_min',
                      hour: pfad2 + week[3] + '.hour',
                      min: pfad2 + week[3] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[3] + '2' + border,
                      startTime: pfad + week[3] + '2' + start,
                      workTime: pfad + week[3] + '2' + work,
                      wT_min: pfad2 + week[3] +  '2' + '.wT_min',
                      hour: pfad2 + week[3]+  '2' + '.hour',
                      min: pfad2 + week[3] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              } 
              
              let thursday = {
                  tag: 4,
                  1: {
                      borderCut: pfad + week[4] + border,
                      startTime: pfad + week[4] + start,
                      workTime: pfad + week[4] + work,
                      wT_min: pfad2 + week[4] + '.wT_min',
                      hour: pfad2 + week[4] + '.hour',
                      min: pfad2 + week[4] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[4] + '2' + border,
                      startTime: pfad + week[4] + '2' + start,
                      workTime: pfad + week[4] + '2' + work,
                      wT_min: pfad2 + week[4] +  '2' + '.wT_min',
                      hour: pfad2 + week[4]+  '2' + '.hour',
                      min: pfad2 + week[4] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              let friday = {
                  tag: 5,
                  1: {
                      borderCut: pfad + week[5] + border,
                      startTime: pfad + week[5] + start,
                      workTime: pfad + week[5] + work,
                      wT_min: pfad2 + week[5] + '.wT_min',
                      hour: pfad2 + week[5] + '.hour',
                      min: pfad2 + week[5] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[5] + '2' + border,
                      startTime: pfad + week[5] + '2' + start,
                      workTime: pfad + week[5] + '2' + work,
                      wT_min: pfad2 + week[5] +  '2' + '.wT_min',
                      hour: pfad2 + week[5]+  '2' + '.hour',
                      min: pfad2 + week[5] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              let saturday = {
                  tag: 6,
                  1: {
                      borderCut: pfad + week[6] + border,
                      startTime: pfad + week[6] + start,
                      workTime: pfad + week[6] + work,
                      wT_min: pfad2 + week[6] + '.wT_min',
                      hour: pfad2 + week[6] + '.hour',
                      min: pfad2 + week[6] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[6] + '2' + border,
                      startTime: pfad + week[6] + '2' + start,
                      workTime: pfad + week[6] + '2' + work,
                      wT_min: pfad2 + week[6] +  '2' + '.wT_min',
                      hour: pfad2 + week[6]+  '2' + '.hour',
                      min: pfad2 + week[6] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              let sunday = {
                  tag: 0,
                  1: {
                      borderCut: pfad + week[0] + border,
                      startTime: pfad + week[0] + start,
                      workTime: pfad + week[0] + work,
                      wT_min: pfad2 + week[0] + '.wT_min',
                      hour: pfad2 + week[0] + '.hour',
                      min: pfad2 + week[0] + '.min',
                      zone: 1,
                      weekday: 1,
                  },
                  2: {
                      borderCut: pfad + week[0] + '2' + border,
                      startTime: pfad + week[0] + '2' + start,
                      workTime: pfad + week[0] + '2' + work,
                      wT_min: pfad2 + week[0] +  '2' + '.wT_min',
                      hour: pfad2 + week[0]+  '2' + '.hour',
                      min: pfad2 + week[0] +  '2' + '.min',
                      zone: 2,
                      weekday: 1,
                  }
              
              } 
              
              const week2 = [sunday, monday, tuesday, wednesday, thursday, friday, saturday];
              
              function createTime(obj, start){
              
                  let Liste = start.split(':');
                  let h = parseInt(Liste[0]);
                  let m = parseInt(Liste[1]);
                  
                  let g = (h)*60 + m;
                  setState(obj.wtmin, g);
              
                  changeTime(obj, g);
              
              }
              
              function changeTime(obj, g){
              
                  let newg = g - 60;
                  let newh = newg/60;
                  let newm = newh - newh
              
                  setState(obj.hour, newh);
                  setState(obj.min, newm);
              }
              
              let schritt;
              function firstRun(){
                  for (schritt = 0; schritt < week2.length; schritt++) {
                  
                      //createTime(week[schritt][1], getState(week[schritt][1].startTime).val)
                      //createTime(week[schritt][2], getState(week[schritt][2].startTime).val)
                      
                      console.log('Gehe einen Schritt nach Osten' + getState(week2[schritt][1].startTime).val);
                      console.log('Gehe nach Osten' + getState(monday[1].startTime).val);
                      //console.log('Gehe ' + getState(JSON.parse(week[schritt])[1].startTime).val);
                    }
              }
              if (init !== true){
                  firstRun();
              }
              
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Malaus last edited by paul53

                @malaus sagte: Der Datenpunkt startTime besteht aus:

                const pfad = 'javascript.0.';
                const week = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
                
                for(let schritt = 0; schritt < week.length; schritt++) {
                    log(week[schritt] + ': ' + getState(pfad + week[schritt] + '.startTime').val);
                }
                
                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Malaus last edited by paul53

                  @malaus sagte: hier mal das bisherige Skript:

                  Ich vermisse die Deklaration der Konstanten pfad, pfad2, border, start, work.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  815
                  Online

                  31.8k
                  Users

                  80.0k
                  Topics

                  1.3m
                  Posts

                  javascript
                  3
                  7
                  268
                  Loading More Posts
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes
                  Reply
                  • Reply as topic
                  Log in to reply
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                  The ioBroker Community 2014-2023
                  logo