Hủy suất chiếu
Thuộc phần Logic và luồng chương trình trong hành trình JavaScript của Coddy. Bài học 65 trên 65.
Thử thách
DễThêm trường hợp cancelScreening để xử lý việc hủy suất chiếu. Tham số dữ liệu chứa:
- screeningId (số)
Hàm cần:
- Nếu suất chiếu có
screeningIdđã cho không tồn tại trongfestivalData.screenings, hãy thêmScreening not found!vàoresultsrồi dừng - Tìm và xóa suất chiếu khỏi mảng
festivalData.screenings - Xóa tất cả vé liên quan khỏi tập hợp
festivalData.tickets - Thêm
Screening cancelled successfully!vào mảngresults
Tự làm thử
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;
}Tất cả bài học trong Logic và luồng chương trình
4JSON phần 2
Duyệt qua JSONJSON lồng nhauOptional chaining trong JSONSao chép nông và sâuÔn tập: Cửa hàng xe đạpÔn tập: Hệ Mặt Trời7Hệ thống quản lý thư viện
Tổng quan dự ánThêm sách10Quản lý hệ thống lễ hội
Tổng quan dự ánThêm phim và địa điểm2Mảng nhiều chiều
Kiến thức cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập về mảng 2 chiềuPhép cộng và phép trừ ma trậnMảng không đềuMảng 3 chiều và hơn nữaCác mẫu thường gặp với mảng 2 chiềuÔn tập về mảng3JSON phần 1
JSON là gì?Kiểm tra khóa có tồn tạiPhương thức của đối tượngToán tử spread phần 1Toán tử spread phần 2Xóa khóaÔn tập: thao tác với khóa trong JSONTự luyện tập: Trình biên dịch JavaScript online