Noter les films
Fait partie de la section Logique & Flux du Journey JavaScript de Coddy — leçon 64 sur 65.
Défi
FacileAjoutez le cas rateMovie qui gère les évaluations de films. Le paramètre data contient :
- movieId (nombre)
- avgRating (nombre entre 1-5)
La fonction doit :
- Valider si le film existe - Si le film n'est pas trouvé, ajoutez "Movie not found!" au tableau results
- Valider que l'évaluation est comprise entre 1 et 5 - Si l'évaluation est invalide, ajoutez "Invalid rating! Must be between 1 and 5" au tableau results
- Mettre à jour le
avgRatingdu film - Ajouter
Rating added successfully!au tableauresults
Essayez vous-même
// Don't remove the lines below
const util = require('util');
util.inspect.defaultOptions.maxArrayLength = null;
// ---------------------------
const festivalData = {
movies: [{
id: 1,
title: "Inception",
director: "Christopher Nolan",
year: 2010,
mainGenre: "Sci-Fi",
secondGenre: undefined,
avgRating: 0,
available: true
}],
venues: [{
id: 1,
name: "Main Theater",
capacity: 200,
}],
screenings: [{
id: 1,
movieId: 1,
venueId: 1,
date: '2023-10-29',
time: '13:35:00',
availableSeats: 200
}],
tickets: new Set()
};
function manageFestival(actions, data) {
let results = [];
actions.forEach((action, index) => {
const currentData = data[index];
switch(action) {
case "listMovies":
results.push(festivalData.movies);
break;
case "listVenues":
results.push(festivalData.venues);
break;
case "listTickets":
results.push(festivalData.tickets);
break;
case "listScreenings":
results.push(festivalData.screenings);
break;
case "addMovie":
const newMovie = {
id: festivalData.movies.length + 1,
title: currentData.title,
director: currentData.director,
year: currentData.year,
mainGenre: currentData.mainGenre,
secondGenre: currentData.secondGenre,
avgRating: 0,
available: true
};
festivalData.movies.push(newMovie);
results.push("Movie added successfully!");
break;
case "addVenue":
const newVenue = {
id: festivalData.venues.length + 1,
name: currentData.name,
capacity: currentData.capacity,
};
festivalData.venues.push(newVenue);
results.push("Venue added successfully!");
break;
case "addScreening":
const movie = festivalData.movies.find(m => m.id === currentData.movieId);
const venue = festivalData.venues.find(v => v.id === currentData.venueId);
if (!movie || !venue) {
results.push("Movie or venue not found!");
break;
}
const existingScreening = festivalData.screenings.find(s =>
s.venueId === currentData.venueId &&
s.date === currentData.date &&
s.time === currentData.time
);
if (existingScreening) {
results.push("Screening already exists at this time!");
break;
}
const newScreening = {
id: festivalData.screenings.length + 1,
movieId: currentData.movieId,
venueId: currentData.venueId,
date: currentData.date,
time: currentData.time,
availableSeats: venue.capacity
};
festivalData.screenings.push(newScreening);
results.push("Screening added successfully!");
break;
case "buyTicket":
const screening = festivalData.screenings.find(s => s.id === currentData.screeningId);
if (!screening) {
results.push("Screening not found!");
break;
}
if (screening.availableSeats < currentData.quantity) {
results.push("Not enough seats available!");
break;
}
for (let i = 0; i < currentData.quantity; i++) {
const ticketId = `${currentData.screeningId}-${screening.availableSeats - i}`;
festivalData.tickets.add(ticketId);
}
screening.availableSeats -= currentData.quantity;
results.push("Tickets purchased successfully!");
break;
default:
results.push("Invalid action!");
}
});
return results;
}Toutes les leçons de Logique & Flux
1Les chaînes de caractères en profondeur
Fondamentaux des chaînesParcourir les chaînesTemplate LiteralsMéthodes des chaînesRécapitulatif - String Weaver4JSON Partie 2
Itérer sur du JSONJSON imbriquéChaînage optionnel JSONCopie superficielle et profondeRécapitulatif - Magasin de vélosRécapitulatif - Système solaire7Système de gestion de bibliothèque
Présentation du projetAjouter des livres10Gérer le système du festival
Présentation du projetAjouter des films et des lieux2Tableaux multidimensionnels
Bases des tableaux 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DRécapitulatif - Tableaux 2DAddition et soustraction de matricesTableaux irréguliers (Jagged Arrays)Tableaux 3D et au-delàModèles courants de tableaux 2DRécapitulatif - Tout sur les tableaux3JSON Partie 1
Qu'est-ce qu'un JSON ?Vérifier si une clé existeMéthodes d'objetL'opérateur Spread Partie 1L'opérateur Spread Partie 2Supprimer des clésRécapitulatif - Manipuler les clés JSON