Übungen aus ../../function-challenge.html
Am Rande: Obwohl wir Temperaturangaben in Fahrenheit vor allem im englischsprachigen Raum erwarten, war es der deutsche Physiker Daniel Gabriel Fahrenheit (1686–1736), der die Fahrenheitskala entwickelte.
- Celsius zu Fahrenheit: c * 9/5 + 32
- Fahrenheit zu Kelvin: (f + 459,67) * 5/9
Ein paar Fixpunkte zur Prüfung:
°Celsius | °Fahrenheit | |
---|---|---|
Siedepunkt des Wassers bei Normaldruck | 100,000 °C | 212,000 °F |
»Körpertemperatur des Menschen« nach Fahrenheit | 35,555 °C | 96,000 °F |
Tripelpunkt des Wassers | 0,010 °C | 32,018 °F |
Gefrierpunkt des Wassers bei Normaldruck | 0,000 °C | 32,000 °F |
Kältemischung aus Wasser, Eis und NH4Cl | −17,777 °C | 0,000 °F |
absoluter Nullpunkt | −273,150 °C | −459,670 °F |
Lösung 1
function fahrenheit(c) { const f = c * 9 / 5 + 32; return f; } console.log (fahrenheit(0));
Oder den Ausgabestring benutzerfreundlicher gestalten?
console.log (`${fahrenheit(0)} \xB0`);
Als Einzeiler mit einer Arrow-Funktion:
const f = (c) => c * 9 / 5 + 32; console.log (f(100));
oder
console.log (`100° C entspricht ${f(100)}° Fahrenheit.`);
Lösung 2
Die erste Lösung ist eine klassische Funktion. Die Math-Methode erwartet Zahlen als Argumente, darum verwendet die Lösung den Spread-Operator (die drei Punkte vor dem Namen des Arrays).
const arr = [17, 12, 128, 129, 24, 50]; { function minMax(arr) { const min = Math.min(...arr); const max = Math.max(...arr); return {min: min, max: max} } const obj = minMax(arr); console.log (obj); }
Und dieselbe Lösung als Einzeiler in der Arrow-Kurzschreibweise.
{ const obj = (arr) => ({ min: Math.min(...arr), max: Math.max(...arr) }) }
Warum stehen die beiden Lösungen in geschweiften Klammern? Wenn wir uns auf ES6 verlassen können (Variablen nur mit let oder const deklariert), brauchen wir keine selbstausführenden Funktionen, um Variablen abzuschotten. Die geschweiften Klammern bilden jeweils einen Block. So kann const obj zweimal eingesetzt werden, aber das zweite const obj überschreibt das erste nicht.
Lösung 3
Die Berechnung der Fläche ist eine einfache Multiplikation mit dem *-Zeichen.
((breite, höhe) => { const fläche = breite * höhe; const ausgabe = `Die Fläche eines Rechtecks mit einer Breite von ${breite} und einer Höhe von ${höhe} ist ${fläche}`; console.log ("Lösung", ausgabe); })(30, 20);