NEWS
[gelöst] key mit größten Wert in Struktur herausfinden
-
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.
-
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.
-
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]]);@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() -
@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() -
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]]);@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 -
@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 -
@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);
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden