To the Max es-419 Explainer

El objetivo de este acertijo: Encuentra el número más grande en el arreglo list con un for…of loop y la función large().

Tutorial de la solución: En esta lección, importamos list que no aparece en la lección, pero que se puede ver a continuación en el código oculto. list es solo un arreglo de 5 números diferentes.

Para encontrar el número más grande en el arreglo list, usaremos la función large() , que solo toma 2 números y devuelve el mayor de los dos:

function larger(a, b) {
    return a > b ? a : b;
}

Si a es mayor que b, la función devuelve a, si no, devuelve b. Así que ahora la pregunta es, ¿de dónde vienen a y b? Ponemos a y b en la siguiente función maximum():

function maximum(array) {
    let max = 0;
    for (let num of array) {
        max = larger(max, num);
    }
    return max;
}

En este momento estamos usando una función dentro de otra función, así que a es max, que comienza como cero, y b es num, que es el primer número en el arreglo list del código oculto. Para ayudar a aclarar esto, usaremos el siguiente arreglo como argumento de ejemplo para list:

list = [44, 29, 7, 88, 31];

La primera vez que el for…of loop cicla por list, el primer número que encuentra es 44, y sabemos que max comienza como 0, así que piensa en la función de esta manera:

function maximum([44, 29, 7, 88, 31]) {
    let max = 0;
    for (let num of [44, 29, 7, 88, 31]) {
        max = larger(0, 44);  -----> ahora a es 0, b es 44
    }
    return max;
}

Debido a que 44 es mayor que 0, max ahora se convierte en 44, y el for…of loop continúa con el siguiente número en el arreglo:

function maximum([44, 29, 7, 88, 31]) {
    let max = 0;
    for (let num of [44, 29, 7, 88, 31]) {
        max = larger(44, 29);  -----> ahora a es 44, b es 29
    }
    return max;
}

Debido a que 44 es mayor que 29, el valor de max permanece como 44 y el for…of continúa. max seguirá siendo 44 a menos que se encuentre un número mayor en el arreglo, por lo que en el arreglo:

list = [44, 29, 7, 88, 31];

podemos ver que max se convertirá en 88 al final, porque es el número más grande del arreglo. Simplemente usar una función sencilla que devuelve el mayor de 2 números con un for…of loop, hemos creado un programa que encuentra el mayor número en una matriz:

Ejemplo de la Solución del Código:
(Pulsa abajo para revelar)

function larger(a, b) {
  return a > b ? a : b;
}

function maximum(array) {
  let max = 0;
  for (let num of array) {
    max = larger(max, num);
  }
  return max;
}
console.log(list);
console.log(maximum(list));

Conceptos de JavaScript: Expression Binaria (>), Bloque de Codigo (funcion), Condicionales (ternary operator), console.log(), Bloque de Codigo (for loop)
Código adicional (hidden code that runs before the puzzle’s code):

El propósito del código adicional es simplemente darnos un arreglo de 5 números que se llama lista para usar en esta lección. Si quieres ver cómo se genera la lista, haz clic en el código adicional a continuación.

const randomNumber = pickRandom(4);
// La función pickRandom(4) genera un número aleatorio entre 1 y 4, y este se almacena en la variable randomNumber //
const index = randomNumber - 1;
// Queremos randomNumber como índice que usaremos con el arreglo arrayOfArrays a continuación. Aquí quitamos 1 porque los arreglos comienzan en 0, por lo que la variable de índice será 0, 1, 2 o 3. //
const arrayOfArrays = [
        [44, 29, 7, 88, 31],
        [14, 93, 56, 72, 5],
        [63, 19, 37, 49, 28],
        [98, 85, 76, 51, 33]
    ];
// Una de estas 4 arreglos se elegirá al azar //

const list = arrayOfArrays[index];

// La variable `list` ahora contiene el arreglo `arrayOfArrays` en un índice que saldrá de forma aleatoria 0 - 3 //
2 Likes