Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Position des kleinsten Wertes einer Liste

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Position des kleinsten Wertes einer Liste

Geplant Angeheftet Gesperrt Verschoben Blockly
9 Beiträge 5 Kommentatoren 433 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • G Offline
    G Offline
    guitardoc
    schrieb am zuletzt editiert von guitardoc
    #1

    Hallo zusammen,

    Gibt es im Blockly eine elegante Lösung, die Position des kleinsten (oder noch besser betragsmäßig kleinsten) Wertes in einer Liste zu ermitteln?

    Danke schon mal im Voraus!

    MartinPM paul53P 2 Antworten Letzte Antwort
    0
    • G guitardoc

      Hallo zusammen,

      Gibt es im Blockly eine elegante Lösung, die Position des kleinsten (oder noch besser betragsmäßig kleinsten) Wertes in einer Liste zu ermitteln?

      Danke schon mal im Voraus!

      MartinPM Online
      MartinPM Online
      MartinP
      schrieb am zuletzt editiert von
      #2

      @guitardoc Unelegant wäre, die Liste zu sortieren - danach ist die Position des kleinsten Elements bekannt ;-)

      246083d2-e2e7-40d1-aac5-d9391bfc9622-grafik.png

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
      Linux pve 6.17.9-1-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      1 Antwort Letzte Antwort
      0
      • OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #3

        @guitardoc

        Kann das leider nur in javascript. Aber eventuell kannst du das daraus nachbauen

        let a = [2,10,3,9,4,8,1,5];
        
        let minIndex=-1;  //initialisierung minIndex mit -1, falls Liste leer
        let minValue=Number.MAX_VALUE;  //größtmöglichste Zahl in javascript
        for (let i = 0; i < a.length; i++) {  //Schleife um das ganze Array abzuklappern
            if (a[i]<minValue) {  //prüfen auf nächst kleineren Wert
                minIndex=i;  //wenn nächst kleinere Wert gefunden, dann index merken
                minValue=a[i];  //und den kleinsten Wert merken
            }
        }
        console.log(minIndex);  
        // Nach Prüfung der kompletten Liste steht in minIndex die Position im Array. 
        // Array-Index beginnt bei 0. d.h. erster Wert hat Index 0
        // Wenn Liste leer, dann ist Ergebnis -1
        // Wenn gleiche Werte mehrfach vorkommen, dann wird immer der index des ersten Eintrags gefunden
        

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        MartinPM 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @guitardoc

          Kann das leider nur in javascript. Aber eventuell kannst du das daraus nachbauen

          let a = [2,10,3,9,4,8,1,5];
          
          let minIndex=-1;  //initialisierung minIndex mit -1, falls Liste leer
          let minValue=Number.MAX_VALUE;  //größtmöglichste Zahl in javascript
          for (let i = 0; i < a.length; i++) {  //Schleife um das ganze Array abzuklappern
              if (a[i]<minValue) {  //prüfen auf nächst kleineren Wert
                  minIndex=i;  //wenn nächst kleinere Wert gefunden, dann index merken
                  minValue=a[i];  //und den kleinsten Wert merken
              }
          }
          console.log(minIndex);  
          // Nach Prüfung der kompletten Liste steht in minIndex die Position im Array. 
          // Array-Index beginnt bei 0. d.h. erster Wert hat Index 0
          // Wenn Liste leer, dann ist Ergebnis -1
          // Wenn gleiche Werte mehrfach vorkommen, dann wird immer der index des ersten Eintrags gefunden
          
          MartinPM Online
          MartinPM Online
          MartinP
          schrieb am zuletzt editiert von MartinP
          #4

          @oliverio Einen Schatz in der Gruppe "Mathematik" gefunden...

          355d6b9a-111e-4208-8230-2d533a6f6c03-grafik.png

          Das Suchen nach dem Minumum des Betrages der Elemente wird aber schwierig ...

          Da gibt es aber z. B. die map() Funktion mit der ein Duplikat der Liste mit den Absolutwerten der Elemente erzeugt werden könnte ...

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
          Linux pve 6.17.9-1-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          1 Antwort Letzte Antwort
          0
          • mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            Ich kann nur wieder sagen: JSONATA ist Dein Freund.

            9b14d0c7-4d40-44cc-8a43-62346eb798ae-image.png

            $#$i[$=$min($$)].$i+1
            

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="+~=%aoi[9`/^_Vm7KPjg">liste</variable>
             </variables>
             <block type="variables_set" id="i49j,#R8*if^*;].A{f+" x="-963" y="-412">
               <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
               <value name="VALUE">
                 <block type="convert_jsonata" id="Rs4%n:/{Mi!Rkz7N!uSU">
                   <value name="EXPRESSION">
                     <shadow type="text" id="NW5izBM_hf(X,YY@Zb2S">
                       <field name="TEXT">[2,10,3,9,4,8,1,5]</field>
                     </shadow>
                   </value>
                   <value name="TARGET">
                     <block type="variables_get" id=",k;uNjB|bsbVq4I)Rps3">
                       <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="debug" id="l;$.aF$3}Ej8@9vylVA1">
                   <field name="Severity">info</field>
                   <value name="TEXT">
                     <shadow type="text" id="e^2}nYU5oX.HU/A7/Y]A">
                       <field name="TEXT">test</field>
                     </shadow>
                     <block type="variables_get" id="(e;yaXaZWgR$7f0mL=Mv">
                       <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                     </block>
                   </value>
                   <next>
                     <block type="debug" id="wPFkW|VzI3VXd{=GCB+5">
                       <field name="Severity">info</field>
                       <value name="TEXT">
                         <shadow type="text" id="Vd/?awN$ir]m`ZHHy:Z)">
                           <field name="TEXT">test</field>
                         </shadow>
                         <block type="text_join" id="#3xBtzsH!E7mn4Ga~5%-">
                           <mutation items="2"></mutation>
                           <value name="ADD0">
                             <block type="text" id="me@K]6:~$L$LD{)/NFZE">
                               <field name="TEXT">Der kleinste Wert befindet sich an Position: </field>
                             </block>
                           </value>
                           <value name="ADD1">
                             <block type="convert_jsonata" id="uojS2Yc|c#W556YE`x.$">
                               <value name="EXPRESSION">
                                 <shadow type="text" id="uRVkocF{_]3:`W+in!+(">
                                   <field name="TEXT">$#$i[$=$min($$)].$i+1</field>
                                 </shadow>
                               </value>
                               <value name="TARGET">
                                 <block type="variables_get" id="-8ARd_-FizU[S(l3/9_R">
                                   <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            Das tolle daran ist nun, dass man das Ganze nun auch mit Objekten machen kann.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            OliverIOO 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              Ich kann nur wieder sagen: JSONATA ist Dein Freund.

              9b14d0c7-4d40-44cc-8a43-62346eb798ae-image.png

              $#$i[$=$min($$)].$i+1
              

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="+~=%aoi[9`/^_Vm7KPjg">liste</variable>
               </variables>
               <block type="variables_set" id="i49j,#R8*if^*;].A{f+" x="-963" y="-412">
                 <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                 <value name="VALUE">
                   <block type="convert_jsonata" id="Rs4%n:/{Mi!Rkz7N!uSU">
                     <value name="EXPRESSION">
                       <shadow type="text" id="NW5izBM_hf(X,YY@Zb2S">
                         <field name="TEXT">[2,10,3,9,4,8,1,5]</field>
                       </shadow>
                     </value>
                     <value name="TARGET">
                       <block type="variables_get" id=",k;uNjB|bsbVq4I)Rps3">
                         <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="debug" id="l;$.aF$3}Ej8@9vylVA1">
                     <field name="Severity">info</field>
                     <value name="TEXT">
                       <shadow type="text" id="e^2}nYU5oX.HU/A7/Y]A">
                         <field name="TEXT">test</field>
                       </shadow>
                       <block type="variables_get" id="(e;yaXaZWgR$7f0mL=Mv">
                         <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                       </block>
                     </value>
                     <next>
                       <block type="debug" id="wPFkW|VzI3VXd{=GCB+5">
                         <field name="Severity">info</field>
                         <value name="TEXT">
                           <shadow type="text" id="Vd/?awN$ir]m`ZHHy:Z)">
                             <field name="TEXT">test</field>
                           </shadow>
                           <block type="text_join" id="#3xBtzsH!E7mn4Ga~5%-">
                             <mutation items="2"></mutation>
                             <value name="ADD0">
                               <block type="text" id="me@K]6:~$L$LD{)/NFZE">
                                 <field name="TEXT">Der kleinste Wert befindet sich an Position: </field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="convert_jsonata" id="uojS2Yc|c#W556YE`x.$">
                                 <value name="EXPRESSION">
                                   <shadow type="text" id="uRVkocF{_]3:`W+in!+(">
                                     <field name="TEXT">$#$i[$=$min($$)].$i+1</field>
                                   </shadow>
                                 </value>
                                 <value name="TARGET">
                                   <block type="variables_get" id="-8ARd_-FizU[S(l3/9_R">
                                     <field name="VAR" id="+~=%aoi[9`/^_Vm7KPjg">liste</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
              </xml>
              

              Das tolle daran ist nun, dass man das Ganze nun auch mit Objekten machen kann.

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              schrieb am zuletzt editiert von
              #6

              @mickym sagte in Position des kleinsten Wertes einer Liste:

              $#$i[$=$min($$)].$i+1

              sieht kurz, pragmatisch und gut aus

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              mickymM 1 Antwort Letzte Antwort
              0
              • OliverIOO OliverIO

                @mickym sagte in Position des kleinsten Wertes einer Liste:

                $#$i[$=$min($$)].$i+1

                sieht kurz, pragmatisch und gut aus

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                Der Vorteil ist halt bei JSONATA - dass Du zum Beispiel bei Objekten - die Position gar nicht brauchst.

                Nehmen wir mal dieses Objektearray:

                [
                  {
                    "text": "Wohnzimmer",
                    "Wert": 2
                  },
                  {
                    "text": "Flur",
                    "Wert": 10
                  },
                  {
                    "text": "Diele",
                    "Wert": 3
                  },
                  {
                    "text": "Schlafzimmer",
                    "Wert": 9
                  },
                  {
                    "text": "Küche",
                    "Wert": 4
                  },
                  {
                    "text": "Bad",
                    "Wert": 8
                  },
                  {
                    "text": "Keller",
                    "Wert": 1
                  },
                  {
                    "text": "Büro",
                    "Wert": 5
                  }
                ]
                

                und wollen den Raum mit dem niedrigsten Wert ermitteln.

                $[$.Wert=$min($$.Wert)].text
                

                c00c6c9b-a261-44e5-9179-0ed7578114ac-image.png

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                1 Antwort Letzte Antwort
                0
                • G guitardoc

                  Hallo zusammen,

                  Gibt es im Blockly eine elegante Lösung, die Position des kleinsten (oder noch besser betragsmäßig kleinsten) Wertes in einer Liste zu ermitteln?

                  Danke schon mal im Voraus!

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von paul53
                  #8

                  @guitardoc
                  Ohne Javascript und JSONATA:

                  Blockly_temp.JPG

                  Einfacher geht es ohne Betrag:

                  Blockly_temp.JPG

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  G 1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @guitardoc
                    Ohne Javascript und JSONATA:

                    Blockly_temp.JPG

                    Einfacher geht es ohne Betrag:

                    Blockly_temp.JPG

                    G Offline
                    G Offline
                    guitardoc
                    schrieb am zuletzt editiert von
                    #9

                    Ich hab es jetzt so gebaut wie Paul vorgeschlagen hat.
                    Ich brauche die Position, da ich weitere Listen habe und von dort die zugehörigen Werte der gleichen Position brauche (weil es kein Array of Array gibt).

                    Stimmt, man hätte es eleganter mit json und jsonata machen können. Da hätte ich die Daten aber anders speichern müssen und ich kenne mich damit auch nicht so gut aus...

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    533

                    Online

                    32.7k

                    Benutzer

                    82.4k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe