Ho bisogno di trovare il numero più alto da 3 numeri diversi. L'unica cosa che ho trovato è max() ma puoi usare solo 2 numeri.Javascript max() funzione per 3 numeri
Qual è il modo migliore?
Ho bisogno di trovare il numero più alto da 3 numeri diversi. L'unica cosa che ho trovato è max() ma puoi usare solo 2 numeri.Javascript max() funzione per 3 numeri
Qual è il modo migliore?
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
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);
+1 Si amare la bellezza della semplicità. –
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
@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. –
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);
var numbers = [2,3,1];
numbers.sort(function(a,b){return b-a});
console.log("max number is", numbers[0]); // max number is 3
Giusto, grazie iMani! – atom
Utilizzo con l'operatore new diffusione
var num = [23,34,56,72,1,22];
Math.max(...num)
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
@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 –
+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) –
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 :-) –