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. JavaScript
  5. [gelöst] key mit größten Wert in Struktur herausfinden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[gelöst] key mit größten Wert in Struktur herausfinden

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 3 Kommentatoren 184 Aufrufe 3 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.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    schrieb am zuletzt editiert von Ben1983
    #1

    Hallo. Kann ich irgendwie herausfinden welcher Wert einer Struktur am größten ist und deren Key zusätzlich?
    Mir ist schon klar, dass es auch andere Werte geben kann in einer Struktur, deshalb vielleicht auch eine Sortierung? Der Werte?

    Also Hintergrund ist, dass ich gerne den Key herausfinden würde, hinter welchem sich der größte Wert versteckt.
    Bsp.

    {a:11,b:23,n:12}
    

    Ich würde gerne b als Lösung erhalten.

    Ben1983B 1 Antwort Letzte Antwort
    0
    • Ben1983B Ben1983

      Hallo. Kann ich irgendwie herausfinden welcher Wert einer Struktur am größten ist und deren Key zusätzlich?
      Mir ist schon klar, dass es auch andere Werte geben kann in einer Struktur, deshalb vielleicht auch eine Sortierung? Der Werte?

      Also Hintergrund ist, dass ich gerne den Key herausfinden würde, hinter welchem sich der größte Wert versteckt.
      Bsp.

      {a:11,b:23,n:12}
      

      Ich würde gerne b als Lösung erhalten.

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      schrieb am zuletzt editiert von Ben1983
      #2

      Habe es gerade selbst heraus gefunden…

      const st = {a:1,xy:33,f:4};
      const abc = Object.keys(st).sort();
      console.log(st);
      console.log(abc);
      console.log(abc[abc.length-1]);
      console.log(st[abc[abc.length-1]]);
      
      
      F OliverIOO 2 Antworten Letzte Antwort
      0
      • Ben1983B Ben1983

        Habe es gerade selbst heraus gefunden…

        const st = {a:1,xy:33,f:4};
        const abc = Object.keys(st).sort();
        console.log(st);
        console.log(abc);
        console.log(abc[abc.length-1]);
        console.log(st[abc[abc.length-1]]);
        
        
        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #3

        @ben1983 hier eine Alternative mit jsonata, funktioniert auch mit Blockly. jsonata ist nicht so easy zu erlernen, aber unfassbar cool :-)

        const myObj = { a: 1, xy: 33, f: 4, d: 33 };
        const expr1 = `$max(*)`
        const expr2 = `$keys($spread()^(>*)[0])`
        const expr3 = `$keys($spread()^($keys($)))`
        const jsonata = async (obj, expr) => await jsonataExpression(obj, expr);
        
        async function test() {
            log(await jsonata(myObj, expr3));
            log(await jsonata(myObj, expr2));
            log(await jsonata(myObj, expr1));
        }
        
        test()
        

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        Ben1983B 1 Antwort Letzte Antwort
        1
        • F fastfoot

          @ben1983 hier eine Alternative mit jsonata, funktioniert auch mit Blockly. jsonata ist nicht so easy zu erlernen, aber unfassbar cool :-)

          const myObj = { a: 1, xy: 33, f: 4, d: 33 };
          const expr1 = `$max(*)`
          const expr2 = `$keys($spread()^(>*)[0])`
          const expr3 = `$keys($spread()^($keys($)))`
          const jsonata = async (obj, expr) => await jsonataExpression(obj, expr);
          
          async function test() {
              log(await jsonata(myObj, expr3));
              log(await jsonata(myObj, expr2));
              log(await jsonata(myObj, expr1));
          }
          
          test()
          
          Ben1983B Offline
          Ben1983B Offline
          Ben1983
          schrieb am zuletzt editiert von
          #4

          @fastfoot danke

          1 Antwort Letzte Antwort
          0
          • Ben1983B Ben1983

            Habe es gerade selbst heraus gefunden…

            const st = {a:1,xy:33,f:4};
            const abc = Object.keys(st).sort();
            console.log(st);
            console.log(abc);
            console.log(abc[abc.length-1]);
            console.log(st[abc[abc.length-1]]);
            
            
            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #5

            @ben1983
            Sort ist Performance mäßig teuer
            Besser wäre reduce
            Ist zwar auch eine Array Methode
            Aber auch mit Obect.keys Befehl erhältst du ja ein Array der keys. Im callback der reduce Funktion kannst du dann die Max Funktion anwenden und erhältst dann exakt einen Wert zurück ohne weitere Array oder Objekt Manipulationen

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

            Ben1983B 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @ben1983
              Sort ist Performance mäßig teuer
              Besser wäre reduce
              Ist zwar auch eine Array Methode
              Aber auch mit Obect.keys Befehl erhältst du ja ein Array der keys. Im callback der reduce Funktion kannst du dann die Max Funktion anwenden und erhältst dann exakt einen Wert zurück ohne weitere Array oder Objekt Manipulationen

              Ben1983B Offline
              Ben1983B Offline
              Ben1983
              schrieb am zuletzt editiert von
              #6

              @oliverio OK, hast Du ein Beispiel?

              F 1 Antwort Letzte Antwort
              0
              • Ben1983B Ben1983

                @oliverio OK, hast Du ein Beispiel?

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #7

                @ben1983 noch zwei Möglichkeiten. Ich finde jsonata schöner, wenn auch für dieses Beispiel etwas überdimensioniert

                const st = { "a": 1, "xy": 33, "f": 4, "d": 32 };
                
                //reduce
                const props = Object.keys(st);
                let maxProp = props.reduce((p, a, i) => st[p] >= st[a] ? p : a)
                let maxVal = props.reduce((p, a, i) => st[p] >= st[a] ? st[p] : st[a]);
                log(maxProp + ' -> ' + maxVal);
                
                //for... in
                maxVal = 0;
                maxProp = '';
                for (const prop in st) {
                    if (st[prop] > maxVal) {
                        maxVal = st[prop];
                        maxProp = prop;
                    }
                }
                log(maxProp + ' -> ' + maxVal);
                

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

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

                  @ben1983

                  Beispiel siehe maxVal Beispiel von fastfood

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

                  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

                  305

                  Online

                  32.6k

                  Benutzer

                  82.3k

                  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