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, le paramètre data contient :
- movieId (nombre)
- venueId (nombre)
- date (chaîne au format 'YYYY-MM-DD')
- time (chaîne au format 'HH:MM:SS')
La fonction doit :
- Vérifier si un film avec le
movieIddonné et un lieu avec levenueIddonné existent dansfestivalData. Si l'un ou l'autre n'est pas trouvé, ajoutez "Movie or venue not found!" dans results - Vérifier s'il n'y a pas de séance au même lieu, à la même date et heure - Si la séance existe déjà, ajoutez "Screening already exists at this time!" dans results
- Créer un nouvel objet screening avec :
- id : généré en ajoutant 1 à la longueur du tableau screening
- movieId, venueId, date et time à partir de data
- availableSeats : égal à la capacité du lieu (capacity)
- Ajouter la séance au tableau
festivalData.screenings - Ajouter "Screening added successfully!" au tableau results
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