Blog

Obtener el valor máximo de un array en JavaScript Blog

Obtener el valor máximo de un array en JavaScript
Tags: JavaScript

JavaScript es un lenguaje muy dinámico, la verdad es que me agrada mucho por todas las posibilidades que nos permite hacer, en este tutorial voy a mostrar una técnica usando el cambio de scope para sacar el valor máximo de un arreglo de enteros.

Para sacar el valor máximo en JavaScript tenemos el método max del objeto Math, funciona de la siguiente manera.

Math.max(5,10,6); //<--10

Este método únicamente recibe los parámetros a evaluar, pero que pasa si queremos evaluar un arreglo de Numbers dinámico, en ese caso tendríamos que iterarlo e ir buscando el máximo valor, algo así:

var values = [5,10,25,8,12],
    max = 0;

for(var i=0,len=values.length;i<len;i++){
    if(max < values[i]){
        max = values[i];
    }
}

console.log(max); //25

El algoritmo funciona correctamente, nos da el valor máximo en el arreglo de números, ahora les quiero mostrar una técnica más avanzada para hacer exactamente lo mismo per en una sola línea de código.

var values = [5,10,25,8,12],

    max = Math.max.apply(null,values); //<----

console.log(max); //25

Que sucedió aquí? Programadores más avanzados en JavaScript generalmente escribirán este tipo de código, sucede que estamos usando el mismo método Math.max, pero ahora usamos el apply para cambiar su contexto.

Si recordamos el método apply recibe el nuevo contexto (scope) donde se ejecutará la función max en este caso, y los argumentos con los que se va a ejecutar la función.

Ya que el objeto Math es un singleton, y la función max no utiliza ningún otro método o propiedad de Math, podemos pasarle cualquier cosa como nuevo contexto, en este caso le estamos pasando null para evitar desperdiciar memoria, pero podríamos pasar cualquier cosa.

Math.max.apply(false,[1,2,3]);
Math.max.apply(undefined,[1,2,3]);
Math.max.apply(Math,[1,2,3]);

Como segundo parámetro le pasamos el arreglo de números que necesitamos evaluar, estos serán los parámetros con los que se ejecutará la función max.

Con esto estaremos sacando el valor máximo de un arreglo, esta técnica es muy usada entre la elite de desarrolladores JavaScript, ya que aplica para cualquier otro método que acepte varios argumentos, por ejemplo el método Math.min, Array.concat, etc.

Si tienen alguna duda, pueden usar los foros, recuerden compartir este tutorial en sus redes sociales.

Happy coding!

1Comentario

  • Avatar-2 Joan 24/01/2015

    Utilizar el sistema del apply es muy elegante, pero veo que es mucho más lento que utilizando el for(). http://jsperf.com/max-for-vs-apply

    Instructor del curso

    Crysfel3

    Autor: Crysfel Villa

    Soy un geek que disfruta crear y compartir cosas en internet! Sígueme en twitter @crysfel