Numeri min/max all’interno di un array JavaScript

6 Lug

Out Of Date Warning

Questo post è stato pubblicato più di 2 anni fa (il 6 luglio 2011). Le idee vanno avanti velocemente, le prospettive cambiano quindi i contenuti potrebbero non essere aggiornati. Ti prego di tenere in considerazione questo, e di verificare le informazioni tecniche presenti nell'articolo prima di farne affidamento per i tuoi scopi.

Trovare il numero più piccolo o più grande all’interno di una matrice JavasScript potrebbe essere un problema non di poco conto.
Difatti il linguaggio non ci offre nessun metodo nativo per eseguire questa operazione. Ciò significa che ci dobbiamo arrangiare da soli e crearci il nostro metodo personale.

A prima vista, la soluzione che può balzare agli occhi, è quella di scorrere l’array alla ricerca del valore corretto.
Ma noi vogliamo scrivere codice intelligente, che sia quindi in primo luogo performante oltre ad essere breve; ed abbiamo un asso nella manica.

Call ed  apply

JavaScript fornisce due metodi (call() ed apply()), per ogni funzione, che possono essere utilizzati per chiamare la funzione, definire il suo contesto, e specificare i suoi argomenti in entrata. In pratica questi due metodi ci permettono di modificare il contesto di funzione.
Ora in questo articolo non ci interessa andare nel dettaglio su questi metodi nè tantomeno sul concetto di contesto di funzione (di cui comunque parleremo il prima possibile).
Ma ci basti sapere che i due metodi sono molto simili tra loro riguardo a come vengono usati, ma con una distinzione: il modo in cui sono impostati gli argomenti.
Semplicemente, call() passa gli argomenti singolarmente mentre apply() passa in argomenti come un array.

La soluzione

I metodi Math.min() e Math.max() sono in grado di assumere un numero qualsiasi di argomenti e di trovare i valori appropriati.
Ora che sappiamo questo proviamo a ragionare…. E se applicassimo il metodo apply() su uno di questi due metodi?
Ma certo, saremmo in grado di trovare il valore più piccolo, o grande, all’interno di un array, in un colpo solo. Vediamo:

Da notare che abbiamo specificato il contesto ad essere l’oggetto Math (il primo parametro dei metodi call() ed apply() è il contesto di funzione).
Questo non è necessario, i metodi minimo e massimo continueranno a lavorare indipendentemente da ciò che viene passato come contesto.

2 Commenti su “Numeri min/max all’interno di un array JavaScript”

  1. Iphone 5 9 ottobre 2011 at 08:06 #

    Greetings! Really useful assistance on this informative article! It truly is the tiny alterations that make the most important adjustments. Many thanks a great deal for sharing!

    • grimax 9 ottobre 2011 at 20:22 #

      😉

Lascia un commento