2009-09-13 10 views

risposta

101

Il Math.max la funzione può accettare qualsiasi numero arbitrario di argomenti:

Sintassi:

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

Usage:

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

Ad esempio:

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

Si potrebbe anche usare per ottenere il valore massimo di un array di numeri come @Pascal MARTIN suggerire, con l'aiuto di apply:

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


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

+1 Non so perché questo non ha È stato raccolto prima ed è di gran lunga la soluzione più semplice. Se vuoi che funzioni con un array usa semplicemente Math.max.apply (Math, array) –

+7

Google sembra amare SO. Stavo googling 'javascript max' 45 ​​minuti dopo che la domanda è stata postata per la prima volta, e ho trovato questa risposta nella prima pagina :-) –

19

In quasi tutte le lingue, si può usare massimo due volte:

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

Come @CMS sottolinea, JavaScript permette in particolare un numero arbitrario di parametri da Math.max:

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

+1 Si amare la bellezza della semplicità. –

+7

Math.max può accettare qualsiasi numero arbitrario di argomenti, vedere la mia risposta qui sotto: http://stackoverflow.com/questions/1418569/javascript-max-function-for-3-numbers/1418646#1418646 – CMS

+0

@CMS: +1 Molto bello, ho imparato qualcosa. Non sono a conoscenza di un altro linguaggio mainstream che lo faccia, sebbene in linea di principio qualsiasi linguaggio possa accettare un numero variabile di argomenti di funzione. –

2

Inserire i valori in un array arr e utilizzare Math.min.apply(null, arr) o Math.max.apply(null, arr) per i valori massimi e minimi rispettivamente:

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

Giusto, grazie iMani! – atom

0

Utilizzo con l'operatore new diffusione

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

for more info

+0

Sebbene questo codice possa rispondere alla domanda, fornire un contesto aggiuntivo su come e/o perché risolve il problema migliorerebbe il valore a lungo termine della risposta. – Badacadabra

+0

@Badacadabra Il valore di questa risposta si ottiene di scrivere un po 'meno codice e ottenere l'uso di "operatore di spread" Ora si dovrebbe andare avanti sperare –

Problemi correlati