Obtener el mayor y menor valor de un array/arreglo Javascript [SOLUCIONADO]

En el mundo de la programación con JavaScript, es muy común encontrarse ante la necesidad de trabajar con colecciones de datos, como los arrays o arreglos. Estas estructuras de datos son fundamentales, ya que nos permiten almacenar múltiples valores en una única variable. Además, JavaScript proporciona una variedad de métodos para manipular estos valores, lo que nos facilita enormemente la gestión y el análisis de los datos.

**Cómo identificar los valores extremos en un array**
Para poder trabajar con arrays de forma eficiente es importante saber determinar cuáles son los valores extremos dentro de la colección de datos. Los valores extremos son, simplemente, el valor más bajo (mínimo) y el más alto (máximo) que se encuentran dentro de un array. Estos valores pueden ser esenciales para realizar cálculos estadísticos, tomar decisiones en algoritmos y, en general, cualquier situación donde se necesite saber el rango de los datos con los que estamos trabajando.

Veamos diferentes métodos para **obtener el valor máximo y mínimo de un arreglo usando JavaScript**.

**Uso de la función Math.max() y Math.min()**
JavaScript cuenta con las funciones Math.max() y Math.min(), las cuales nos devuelven el mayor y menor número de un conjunto de números, respectivamente. Sin embargo, estas funciones no aceptan un array como argumento directamente. Para pasarle un array a estas funciones, debemos utilizar el operador de propagación (spread operator), que nos permite ‘expandir’ un array en una lista de argumentos.

javascript

const numeros = [5, 17, 3, 9, 23, 1];
const maximo = Math.max(...numeros);
const minimo = Math.min(...numeros);

console.log(maximo); // 23
console.log(minimo); // 1

Este método es especialmente elegante y fácil de usar, pero puede no ser el más eficiente en casos donde trabajamos con arrays muy grandes.

**Implementación de un bucle para localizar mínimos y máximos**
Para evitar el uso de funciones nativas y tener un mayor control sobre el proceso, podemos recurrir a un bucle que recorra todos los elementos del array y determine el valor máximo y mínimo.

javascript

let numeros = [5, 17, 3, 9, 23, 1];
let maximo = numeros[0];
let minimo = numeros[0];

for(let i = 1; i < numeros.length; i++) {
  if(numeros[i] > maximo) {
    maximo = numeros[i];
  }
  if(numeros[i] < minimo) {
    minimo = numeros[i];
  }
}

console.log(maximo); // 23
console.log(minimo); // 1

Este enfoque es muy útil porque no solo es compatible con todas las versiones de JavaScript, sino que también es eficiente y rápido para arreglos de cualquier tamaño.

**Aplicación del método reduce() para hallar valores extremos**
El método reduce() ejecuta una función reductora sobre cada elemento de un array, devolviendo un único valor como resultado. Podemos aprovechar esta característica para compactar nuestro array hasta quedarnos únicamente con el número máximo y mínimo. Implementaremos dos calls a reduce() para cada uno de estos valores:

javascript

const numeros = [5, 17, 3, 9, 23, 1];

// Para obtener el máximo
const maximo = numeros.reduce((a, b) => Math.max(a, b));

// Para obtener el mínimo
const minimo = numeros.reduce((a, b) => Math.min(a, b));

console.log(maximo); // 23
console.log(minimo); // 1

Usar reduce() para esta tarea resulta ser una solución muy concisa y elegante, y puede ser preferida por muchos desarrolladores debido a su naturaleza declarativa y funcional.

**Soluciones modernas: Destructuring y Arrow Functions**
Con la llegada de ES6 o ECMAScript 2015, JavaScript adquirió nuevas capacidades que nos permiten escribir nuestro código de una manera más compacta y legible. Usando arrow functions y destructuring, podemos combinar las anteriores técnicas en una sola línea de código.

javascript

const numeros = [5, 17, 3, 9, 23, 1];
const maximo = Math.max(...numeros); // 23
const minimo = Math.min(...numeros); // 1

console.log(maximo);
console.log(minimo);

Esta aproximación permite a los desarrolladores simplificar su código y hacerlo más expresivo y fácil de entender para otros programadores.

En definitiva, JavaScript nos brinda múltiples herramientas para trabajar con arrays y sus valores. Dependiendo del contexto en el que nos encontremos y nuestras necesidades específicas de rendimiento o de legibilidad de código, podremos elegir una de las técnicas mencionadas para **determinar los valores extremos en un arreglo**.

Es importante mencionar que, aunque en muchos casos deseamos encontrar el máximo y mínimo en términos numéricos, estos métodos pueden ser adaptados a la búsqueda de extremos según otro tipo de criterios, como la longitud de cadenas de texto dentro de un array, o mayor y menor valor de propiedades específicas en un array de objetos, mediante el uso de funciones de comparación personalizadas que podemos pasar a `reduce()`, o en combinación con `map()` y otros métodos de arrays.

La elección de cómo **hallar los valores extremos** dependerá principalmente de tres factores: la familiaridad con las funciones y métodos de JavaScript, el tamaño y la complejidad de los datos con los que vamos a trabajar, y por último, pero no menos importante, nuestras necesidades en términos del rendimiento de la aplicación. Cada uno de los métodos tiene sus ventajas y sus inconvenientes, pero todos ellos son herramientas poderosas que, bien utilizadas, serán de gran ayuda en la manipulación y el análisis de datos en JavaScript.

Con práctica y comprensión de estas técnicas, podrás manejar de manera efectiva y eficiente los arrays en tus proyectos de JavaScript, asegurándote de que siempre puedas encontrar los valores mínimo y máximo con la mayor sencillez y rendimiento posibles. Cada desarrollador desarrollará su propia preferencia basándose en su estilo, pero tener una variedad de técnicas en nuestra 'caja de herramientas' programáticas nos preparará para cualquier situación que pueda surgir.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad