Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] Werte aus Objektattributen in ein Array packen?

    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

    [Gelöst] Werte aus Objektattributen in ein Array packen?

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

      Hi zusammen,

      ich probiere mich gerade mit Arrays und dem Lambda-Ausdruck ( => ) aus.
      Ziel ist es, möglichst elegant in einer kurzen Zeile alle Werte aus den entsprechenden Objekten als Array zu bekommen.
      Folgend mein Code:

      var strSelector='channel[state.id=alias.0.intern.EG.sensors.Klima.*.temperature]';
      log("[Ø-Funktion.dynSelektor] Werte folgenden Selektor aus: '"+strSelektor+"'");
      var aObjects = $(strSelektor);
      log("[Ø-Funktion.dynSelektor] Werte des Selektors:");
      aResult = aObjects.each( index => getState(index).val );
      log("[Ø-Funktion.dynSelektor] Ergebnisse: '"+aResult.toString()+"'");
      return aResult;
      

      aObjects enthält alle Temperaturen als "array of objects" per Selektor gesammelt.
      Der Objektbaum dazu:
      fcbf35be-542c-4b04-88fc-d43f11009f0b-image.png
      aResult enthält aber wieder nur Objekte anstelle der konkreten Werte, die ich bei ".val" nun erwartet hätte?
      geloggt wird: "[Ø-Funktion.dynSelektor] Ergebnisse: '[object Object]'"
      Eigentlich hätte ich so was wie "[Ø-Funktion.dynSelektor] Ergebnisse: [ 20.71, 21.23, 20.95,23 ]" erwartet?

      Wo ist mein Verständnisfehler?

      Ausführliches Log:


      15:53:39.767 info javascript.0 (3434688) script.js.common.Generic_functions: [Ø-Funktion.dynSelektor] Werte folgenden Selektor aus: 'channel[state.id=alias.0.intern.EG.sensors.Klima.*.temperature]'
      15:53:39.798 info javascript.0 (3434688) script.js.common.Generic_functions: [Ø-Funktion.dynSelektor] Inhalte des Selektors:
      15:53:39.799 info javascript.0 (3434688) script.js.common.Generic_functions: getState(id=alias.0.intern.EG.sensors.Klima.Bad.temperature, timerId=undefined) => {"val":20.71,"ack":true,"ts":1704206700335,"q":0,"from":"system.adapter.zigbee.0","user":"system.user.admin","lc":1704204900770}
      15:53:39.799 info javascript.0 (3434688) script.js.common.Generic_functions: getState(id=alias.0.intern.EG.sensors.Klima.Flur.temperature, timerId=undefined) => {"val":21.21,"ack":true,"ts":1704205687931,"q":0,"from":"system.adapter.zigbee.0","user":"system.user.admin","lc":1704205687931}
      15:53:39.799 info javascript.0 (3434688) script.js.common.Generic_functions: getState(id=alias.0.intern.EG.sensors.Klima.HWR.temperature, timerId=undefined) => {"val":20.95,"ack":true,"ts":1704206537319,"q":0,"from":"system.adapter.zigbee.0","user":"system.user.admin","lc":1704206537319}
      15:53:39.799 info javascript.0 (3434688) script.js.common.Generic_functions: getState(id=alias.0.intern.EG.sensors.Klima.Wohnzimmer.temperature, timerId=undefined) => {"val":23,"ack":true,"ts":1704206273718,"q":0,"from":"system.adapter.zigbee.0","user":"system.user.admin","lc":1704202695526}
      15:53:39.766 info javascript.0 (3434688) script.js.common.Generic_functions: [Ø-Funktion.dynSelektor] Ergebnisse: '[object Object]'

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

        @iobnordlicht sagte: Ergebnisse: [ 20.71, 21.23, 20.95,23 ]" erwartet?

        Wo ist das Werte-Array?

        const ids = $('alias.0.intern.EG.sensors.Klima.*.temperature');
        
        const arr = [];
        ids.each(function(id) {
            arr.push(getState(id).val);
        }); 
        log('Ergebnisse: ' + JSON.stringify(arr));
        
        I 1 Reply Last reply Reply Quote 0
        • I
          IobNordlicht @paul53 last edited by IobNordlicht

          @paul53
          ich dachte hier?

          aResult = aObjects.each( index => getState(index).val );
          

          Danke für deine alternative Lösung, ist nur so, dass ich gerade versuche, den Pfeil zu verstehen in der Anwendung und ich dachte, das müsste so doch klappen?

          paul53 1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @IobNordlicht last edited by paul53

            @iobnordlicht sagte: ich dachte hier?

            Der Selektor liefert ein Objekt mit IDs, das einem Array ähnlich, aber kein Array ist.

            @iobnordlicht sagte in Elegant Werte aus Objektattributen in ein Array packen?:

            versuche, den Pfeil zu verstehen

            Man kann auch den Pfeil verwenden:

            const ids = $('alias.0.intern.EG.sensors.Klima.*.temperature');
             
            const arr = [];
            ids.each(id => {
                arr.push(getState(id).val);
            }); 
            log('Ergebnisse: ' + JSON.stringify(arr));
            
            I 1 Reply Last reply Reply Quote 0
            • I
              IobNordlicht @paul53 last edited by

              @paul53
              Ok, danke. Also eine Liste und kein Array, daher mein Verständnisproblem 🙂

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

              Support us

              ioBroker
              Community Adapters
              Donate

              755
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              2
              5
              254
              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