El objetivo de este acertijo: Encuentra el número más grande en el arreglo
list
con un for…of loop y la funciónlarge()
.
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 //