Explicador de Se promediará
Objetivo de este acertijo: Completar la definición de la función averageRating()
, de modo que devuelve la calificación de una lista de hoteles. Luego encontrar la calificación promedia de los hoteles Hoptropolis.
Tutorial de la solución: Las funciones average()
y getRatings()
que creaste en los acertijos anteriores se importan para que puedas usarlos aquí.
La definición de la función averageRating()
tomará una lista de reseñas almacenadas en hotelList
. Luego usa la función getRatings()
para obtener un arreglo solo de las calificaciones de esos hoteles y lo almacena en ratings
. Para calcular el promedio de las ratings
, puedes usar tu función average()
. En vez de devolver 0, la función debe devolver average(ratings)
.
La variable hoptropolisHotels
almacena un arreglo de todos los hoteles en Hoptropolis. Para obtener la calificación promedio, puedes usar averageRating(hoptropolisHotels)
. Para ver la salida de esa llamada, hay que usar console.log()
. Ese comando entero debe ir en la parte inferior de tu código.
Solución del código de ejemplo:
(Pulsa a continuación para revelar)
import { getData, findHotels } from 'grasshopper.reviews';
import { average, getRatings } from 'myFunctions';
function averageRating(hotelList) {
let ratings = getRatings(hotelList);
return average(ratings);
}
let grasslandHotels = getData('Grassland', findHotels);
console.log('Average Grassland hotel rating:');
console.log(averageRating(grasslandHotels));
let hoptropolisHotels = getData('Hoptropolis', findHotels);
console.log('Average Hoptropolis hotel rating:');
console.log(averageRating(hoptropolisHotels));
Conceptos de JavaScript: funciones de devolución de llamada, funciones de llamada, bloque de código (función), import
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 average = array => {
array.reduce((a, b) => a + b) / array.length
};
const getRatings = hotelList => {
hotelList.map(hotel => hotel.rating)
};