Annuler des projections
Fait partie de la section Logique & Flux du Journey JavaScript de Coddy — leçon 65 sur 65.
Défi
FacileAjoutez le cas cancelScreening qui gère les annulations de séances. Le paramètre data contient :
- screeningId (nombre)
La fonction doit :
- Si la séance avec l'identifiant
screeningIddonné n'existe pas dansfestivalData.screenings, ajouter"Screening not found!"àresultset s'arrêter - Trouver et supprimer la séance du tableau
festivalData.screenings - Supprimer tous les billets associés de l'ensemble
festivalData.tickets - Ajouter
"Screening cancelled successfully!"au tableauresults
Essayez vous-même
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;
case "rateMovie":
const tempMovie = festivalData.movies.find(m => m.id === currentData.movieId);
if (!tempMovie) {
results.push("Movie not found!");
break;
}
if (currentData.avgRating < 1 || currentData.avgRating > 5) {
results.push("Invalid rating! Must be between 1 and 5");
break;
}
tempMovie.avgRating = currentData.avgRating
results.push("Rating added 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