Math.max()

Sumário

A função Math.max() retorna o maior de um ou mais números.

Sintaxe

Math.max([valor1[,valor2, ...]])

Parâmetros

Valor de retorno

O maior dos números passados como argumentos. Se pelo menos um dos argumentos não puder ser convertido para um número NaN é retornado.

Descrição

Por max ser um método estático em Math, você sempre irá usá-lo da seguinte maneira Math.max(), e não como um método da classe Math que você tenha instanciado.

Se nenhum argumento for passado o resultado sempre será - Infinity.

Se um dos argumentos não puder ser convertido em um número, o resultado será NaN.

Exemplos

Usando Math.max

js
Math.max(10, 20); //  20
Math.max(-10, -20); // -10
Math.max(-10, 20); //  20

Retornando o maior elemento de um array

Array.reduce() pode ser usada para encontrar o maior elemento em um vetor numérico, comparando cada valor:

js
var arr = [1, 2, 3];
var max = arr.reduce(function (a, b) {
  return Math.max(a, b);
}, -Infinity);

A função a seguir utiliza Function.prototype.apply() para encontrar o elemento de maior valor dentro do array. getMaxOfArray([1,2,3]) é equivalente a Math.max(1, 2, 3), mas você pode usar getMaxOfArray em arrays construídos programaticamente e o ideal é utilizá-la somente em arrays com relativamente poucos elementos.

js
function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}

O novo operador spread (en-US) é um modo curto de se escrever a solução com apply para retornar o maior valor de um array.

js
var arr = [1, 2, 3];
var max = Math.max(...arr);
// max: 3

Entretanto, tanto spread(...) quanto apply irão ou falhar ou retornar o resultado errado caso o array tenha muitos elementos, porque eles tentam passar o array de elementos como parâmetros de funções. Veja usando apply e funções embutidas para mais detalhes. A solução com reduce não apresenta esse problema.

Especificações

Specification
ECMAScript Language Specification
# sec-math.max

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também