Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. ID vom Selektor: Liste trotz "für jeden" Schleife?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ID vom Selektor: Liste trotz "für jeden" Schleife?

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

      Hallo,

      ich bin eben über folgendes Verhalten mit JavaScript 5.0.14 gestolpert:

      Diese Schleife:
      53b8cf8f-ed0a-4061-8884-75c79dffe00c-image.png

      erzeugt wie erwartet für jeden Alarm-Eintrag eine Debug-Zeile:

      12:55:15.232	info	javascript.9 (16908) script.js.WIP.Skript_1: alexa2.0.Echo-Devices.xxx.Alarm.yyy.enabled
      12:55:15.232	info	javascript.9 (16908) script.js.WIP.Skript_1: alexa2.0.Echo-Devices.xxx.Alarm.yyy.enabled
      usw.
      

      Wenn ich dagegen mit dem folgenden Script auch die MusicAlarm-Einträge dazunehme:
      40ca4ef0-b51c-4b3e-bcb3-e42227f909e5-image.png

      Dann bekomme ich im Log nicht eine lange Liste mit allen Einträgen, sondern 2 Arrays wie das folgende:

      12:55:15.435	info	javascript.9 (16908) script.js.WIP.Skript_1: ['alexa2.0.Echo-Devices.xxx.MusicAlarm.yyy.enabled','alexa2.0.Echo-Devices.xxx.MusicAlarm.yyy.enabled','alexa2.0.Echo-Devices.xxx.MusicAlarm.yyy.enabled']
      

      Ist das so gewollt? Ich glaube eigentlich, dass in früheren Adapter-Versionen sich das nicht so verhalten hätte. So kann ich die "erzeuge Liste mit" nicht verwenden. Übrigens: Verwende ich die gleiche "erzeuge Liste..." als Trigger, werden korrekt "10 Subscriptions" angezeigt.

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Ahnungsbefreit last edited by paul53

        @ahnungsbefreit sagte: Ist das so gewollt?

        Ja. Der Blockly-Selektor ist schon immer ein Array.

        @ahnungsbefreit sagte in ID vom Selektor: Liste trotz "für jeden" Schleife?:

        Wenn ich dagegen mit dem folgenden Script auch die MusicAlarm-Einträge dazunehme:

        Lass einfach den Punkt vor Alarm weg.

        A 1 Reply Last reply Reply Quote 0
        • A
          Ahnungsbefreit @paul53 last edited by

          @paul53 ok, aber durch die "für jeden Wert i aus der Liste" sollte ich doch die Einträge der Liste einzeln erhalten, so wie beim 1.Blockly, oder?

          paul53 haus-automatisierung 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @Ahnungsbefreit last edited by paul53

            @ahnungsbefreit sagte: aber durch die "für jeden Wert i aus der Liste" sollte ich doch die Einträge der Liste einzeln erhalten

            Deine Liste ist ein Array, bestehend aus 2 Arrays, also 2 Einträge.

            So kann man beide Selektoren zu einem Array machen:

            Bild_2021-03-22_133235.png

            1 Reply Last reply Reply Quote 1
            • haus-automatisierung
              haus-automatisierung Developer Most Active @Ahnungsbefreit last edited by

              @ahnungsbefreit sagte in ID vom Selektor: Liste trotz "für jeden" Schleife?:

              aber durch die "für jeden Wert i aus der Liste" sollte ich doch die Einträge der Liste einzeln erhalten, so wie beim 1.Blockly, oder?

              Bekommst Du doch auch geliefert? Ein Array enthält halt zwei weitere Arrays. Iterierst Du nun über das erste, bekommst Du jeweils ein Array zurück.

              Du müsstest die Arrays mergen anstatt ein neues zu erstellen um das gewünschte Verhalten zu erreichen.

              A 1 Reply Last reply Reply Quote 0
              • A
                Ahnungsbefreit @haus-automatisierung last edited by

                @haus-automatisierung @paul53 Danke für die schnelle Antwort. Ich habe mir jetzt so geholfen:
                f20b1391-bb02-4dac-a88d-9d8594c8299f-image.png

                Und arrayConcat macht einfach genau das:

                return arr1.concat(arr2);
                

                Danke!

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

                Support us

                ioBroker
                Community Adapters
                Donate

                666
                Online

                31.7k
                Users

                79.6k
                Topics

                1.3m
                Posts

                3
                6
                452
                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