Explicador de Divide de forma uniforme
Objetivo de este acertijo: Completar la definición de la función average()
, de modo que devuelva el valor promedio de array
.
Tutorial de la solución: El promedio (también llamado “media aritmética”) de un conjunto de números se calcula sumando todos los números y luego dividiendo el total por el número de valores usados.
La definición de la función comienza creando una variable llamada total
. Dado que todavía no se ha sumado nada, comienza en 0. A continuación, hay un for...of
loop que pasa por cada element
de array
. Dentro del ciclo, el element
se debe agregar al total
usando el operador +=
. Una vez que se ha terminado el ciclo, el total
será la suma de todos los números en array
. Para return
(devolver) el promedio, el total
se debe dividir por el número de valores. El número de valores corresponde a .length
de array
, de modo que el valor return
debe ser total / array.length
.
Solución del código de ejemplo:
(Pulsa a continuación para revelar)
import { getData, findHotels } from 'grasshopper.reviews';
import { getRatings } from 'myFunctions';
function average(array) {
let total = 0;
for (let element of array) {
total += element;
}
return total/array.length;
}
let grasslandRatings = getRatings(getData('Grassland', findHotels));
console.log(grasslandRatings);
console.log('The average is:');
console.log(average(grasslandRatings));
Conceptos de JavaScript: operador aritmético (/), operador de asignación (+=), funciones de devolución de llamada, funciones de llamada, bloque de código (for loop, función), console.log()
, import
, .length
Código adicional (código oculto que se ejecuta antes del código del acertijo):
let _hotelReviews = [
{
type: 'Hopaday Inn',
city: 'Hopalot',
price: 138,
rating: 4.0
},
{
type: 'Hopaday Inn',
city: 'Hopalot',
price: 78,
rating: 3.8
},
{
type: 'Hopaday Inn',
city: 'Hoptropolis',
price: 86,
rating: 2.4
},
{
type: 'Hopaday Inn',
city: 'Hoptropolis',
price: 126,
rating: 4.4
},
{
type: 'Hopaday Inn',
city: 'Grassland',
price: 138,
rating: 3.0
},
{
type: 'Hopaday Inn',
city: 'Grassland',
price: 245,
rating: 4.6
},
{
type: 'The Grassy Suites',
city: 'Hopalot',
price: 189,
rating: 4.4
},
{
type: 'The Grassy Suites',
city: 'Hopalot',
price: 111,
rating: 2.4
},
{
type: 'The Grassy Suites',
city: 'Hoptropolis',
price: 171,
rating: 2.8
},
{
type: 'The Grassy Suites',
city: 'Hoptropolis',
price: 191,
rating: 2.8
},
{
type: 'The Grassy Suites',
city: 'Grassland',
price: 265,
rating: 4.1
},
{
type: 'The Grassy Suites',
city: 'Grassland',
price: 186,
rating: 3.5
},
{
type: 'Hopton Inn',
city: 'Hopalot',
price: 160,
rating: 2.4
},
{
type: 'Hopton Inn',
city: 'Hoptropolis',
price: 226,
rating: 4.5
},
{
type: 'Hopton Inn',
city: 'Hoptropolis',
price: 192,
rating: 3.5
},
{
type: 'Hopton Inn',
city: 'Grassland',
price: 149,
rating: 4.9
}
];
const getData = (city, afunction) => {
afunction(city.trim().charAt(0).toUpperCase() + city.trim().toLowerCase().slice(1));
};
const findHotels = city => {
_hotelReviews.filter( review => review.city === city);
};
const getRatings = hotelList => {
hotelList.map(hotel => hotel.rating)
};