Ajouter une projection
Fait partie de la section Logique & Flux du Journey JavaScript de Coddy — leçon 62 sur 65.
Défi
FacileAjoutez un nouveau cas de test à votre instruction switch : addScreening.
Pour addScreening, les paramètres de données contiennent :
- movieId (nombre)
- venueId (nombre)
- date (chaîne de caractères au format 'YYYY-MM-DD')
- time (chaîne de caractères au format 'HH:MM:SS')
La fonction doit :
- Valider si le film et le lieu existent - Si le film ou le lieu n'est pas trouvé, ajoutez "Movie or venue not found!" aux résultats
- Vérifier qu'il n'y a pas de projection dans le même lieu, à la même date et à la même heure - Si une projection existe, ajoutez "Screening already exists at this time!" aux résultats
- Créer un nouvel objet de projection avec :
- id : généré en ajoutant 1 à la longueur du tableau de projections
- movieId, venueId, date, et time provenant des données
- availableSeats : égal à la capacité du lieu
- Ajouter la projection au tableau
festivalData.screenings - Ajouter
Screening added successfully!au tableau des résultats
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;
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