JavaScript/Objekte/Math/max

Aus SELFHTML-Wiki
< JavaScript‎ | Objekte‎ | Math
Wechseln zu: Navigation, Suche

Der Methode max des Standardobjektes Math kann eine (fast[1]) beliebige Anzahl numerischer Werte übergeben werden und sie ermittelt, welcher der übergebenen Werte der Größte ist. Dieser Wert wird dann zurückgegeben.


Syntax

Math.max(value1, value2, ...)


Attribute
Writable true
Enumerable false
Configurable true


Werden der Methode max keine Argumente übergeben, dann wird der Wert negative Infinity zurückgegeben und in dem Fall, dass ein Wert übergeben wird, der nicht vom Typ Number ist, ist der Rückgabewert NaN. Ansonsten wird von der Methode grundsätzlich der größte der beim Aufruf als Argument übergebenen numerischen Werte ermittelt und zurückgegeben.

Beispiel ansehen …
function berechnen () {
  const ausgabe = document.getElementById('Ausgabe'),
        eingabe1 = document.getElementById('Eingabe1'),
        eingabe2 = document.getElementById('Eingabe2');

  let zahl = Math.max(eingabe1.value, eingabe2.value);
 
  ausgabe.textContent = 'Die größere Zahl ist: ' + zahl;
}

Das Beispiel definiert ein Formular mit zwei Eingabefeldern und einem Button. Nach Eingabe je einer Zahl im ersten und im zweiten Eingabefeld und Klick auf den Button wird das Ergebnis ausgegeben. Das Ergebnis ist die Anwendung von max() auf die Werte aus den beiden Eingabefeldern.

Maximum eines Arrays

Um das Maximum eines Arrays zu berechnen, muss max auf alle Werte des Arrays angewendet werden. Bei Arrays mit weniger als „mehreren Zehntausend Elementen“[1] können die Array-Elemente an apply des Funktionsprototypen von max übergeben oder mit dem Spread-Operator ... „gespreizt“ werden:

Beispiel
const zahlen = [1, 2, 5, 4];

// Function.prototype.apply
Math.max.apply(null, zahlen);	// 5

// Spread-Operator
Math.max(...zahlen);		// 5

Weil die Übergabe von Parametern an eine Funktion über den Stack erfolgt, dessen Größe begrenzt ist, wird für größere Arrays (bzw. im Allgemeinen) empfohlen[2], Array.prototype.reduce zu verwenden:

Beispiel
const zahlen = [1, 2, 5, 4];

if (zahlen.length > 0) {
   let maximum = zahlen.reduce((a,p) => Math.max(a, p));	// 5
   // mit dem Maximum weiterarbeiten
}
else {
   // Sonderfall: Keine Daten für ein Maximum da
}
Hinweis:
Wenn reduce ohne Anfangswert auf ein leeres Array angewendet wird, bricht der Aufruf mit einem TypeError ab. Deshalb müssen Sie entweder den Fall des leeren Arrays getrennt behandeln oder einen mehr oder weniger sinnvollen Anfangswert wie -Infinity als dritten Parameter von reduce übergeben. Es hängt von Ihrem Programm ab, welcher dieser beiden Wege für Sie der bessere ist.

Weblinks

Einzelnachweise

  1. 1,0 1,1 MDN: Function.prototype.apply: Using apply() and built-in functions
  2. MDN: Math.max(): Getting the maximum element of an array