Explicador de En busca de una buena oferta
Objetivo de este acertijo: Usar el método .forEach()
para encontrar el valor mínimo del arreglo flightPrices
.
Tutorial de la solución: Las variables max
y min
comienzan con almacenar el primer número en el arreglo. Estas variables necesitan ser actualizados a los valores más grandes y más pequeños en el arreglo. Esto se puede hacer con las funciones compareToMaximum
y compareToMinimum
. La función compareToMaximum
toma un valor y verifica si es mayor que el valor max
actual. Si lo es, entonces max
se actualiza a ese nuevo valor; de lo contrario se mantiene igual. compareToMinimum
hace algo similar, pero verifica si el valor es menor que el valor min
actual. Todo lo que debe suceder es ejecutar todos los valores del arreglo por las 2 funciones.
En vez de usar un for loop, se puede usar el método .forEach()
. Cuando se aplica .forEach()
a un arreglo, cada elemento del arreglo se pasa a la función de devolución de llamada dada a .forEach()
. Si usas flightPrices.forEach(compareToMinimum)
, entonces cada uno de los elementos del arreglo flightPrices
se usará como la entrada para compareToMinimum()
. Esa función compareToMinimum()
actualizará el valor de la variable min
.
Solución del código de ejemplo:
(Pulsa a continuación para revelar)
import { flightPrices } from 'grasshopper.travel';
let max = flightPrices[0];
let min = flightPrices[0];
function compareToMaximum(value) {
max = value > max ? value : max;
}
function compareToMinimum(value) {
min = value < min ? value : min;
}
console.log(flightPrices);
flightPrices.forEach(compareToMaximum);
console.log('Maximum: ' + max);
flightPrices.forEach(compareToMinimum);
console.log('Minimum: ' + min);
Conceptos de JavaScript: funciones de devolución de llamada, funciones de llamada, bloque de función (función), console.log()
, condicionales (declaración ternaria), .forEach()
, import
Código adicional (código oculto que se ejecuta antes del código del acertijo):
let flightPrices= [...Array(6)].map(i => pickRandom(275)+125);
flightPrices.splice(pickRandom(6),0,Math.min(...flightPrices)-pickRandom(25));