2009-09-13 8 views

Respuesta

101

El Math.max la función puede aceptar cualquier número arbitrario de argumentos:

Sintaxis:

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

Uso:

var max = Math.max(num1, num2, num3); 

Por ejemplo:

alert(Math.max(1,2,3,4,5,6)); // alerts 6 

Incluso se puede utilizar para obtener el valor máximo de un conjunto de números @Pascal MARTIN sugerir, con la ayuda de apply:

Array.prototype.max = function() { 
    return Math.max.apply(Math, this); 
}; 


var max = [1,2,3,4,5,6].max(); // 6 
+2

+1 No sé por qué esto no ha sucedido ha sido recogido antes y es, de lejos, la solución más simple. Si desea que funcione con una matriz, simplemente use Math.max.apply (Matemáticas, matriz) –

+7

Parece que a Google le encanta. Estuve buscando en Google 'javascript max' 45 ​​minutos después de que la pregunta se publicó por primera vez, y encontré esta respuesta en la primera página :-) –

19

en casi cualquier idioma, se puede utilizar max dos veces:

Math.max(num1, Math.max(num2, num3)) 

Como @CMS señala, JavaScript permite específicamente un número arbitrario de parámetros para Math.max:

Math.max(num1, num2, num3); 
+0

+1 tiene que amar la belleza de la simplicidad. –

+7

Math.max puede aceptar cualquier número arbitrario de argumentos, consulte mi respuesta a continuación: http://stackoverflow.com/questions/1418569/javascript-max-function-for-3-numbers/1418646#1418646 – CMS

+0

@CMS: +1 Muy bien, aprendí algo. No estoy al tanto de otro lenguaje convencional que lo haga, aunque en principio cualquier lenguaje que pueda aceptar un número variable de argumentos de funciones podría hacerlo. –

2

Introduzca sus valores en una matriz arr y utilizar Math.min.apply(null, arr) o Math.max.apply(null, arr) para los valores máximos y mínimos respectivamente:

var arr = []; 
arr.push(value1); 
arr.push(value2); 
arr.push(value3); 

var minValue = Math.min.apply(null, arr); 
var maxValue = Math.max.apply(null, arr); 
-1
var numbers = [2,3,1]; 
numbers.sort(function(a,b){return b-a}); 
console.log("max number is", numbers[0]); // max number is 3 
+0

Bien, gracias iMani! – atom

0

Utilización con el nuevo operador de difusión

var num = [23,34,56,72,1,22]; 
Math.max(...num) 

for more info

+0

Si bien este código puede responder la pregunta, proporcionar un contexto adicional sobre cómo y/o por qué resuelve el problema mejoraría el valor a largo plazo de la respuesta. – Badacadabra

+0

@Badacadabra El valor de esta respuesta le permite escribir un código un poco menor y puede usar el "operador de extensión" Ahora debe Votar Voto Espero –

Cuestiones relacionadas