Menu
CoddyTech

Đánh dấu đã đọc

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 46 trên 65.

challenge icon

Thử thách

Dễ

Thêm một case mới markAsRead vào câu lệnh switch. Hành động này cần đánh dấu sách là đã đọc và thêm điểm đánh giá.

Với case markAsRead:

  1. Tham số currentData là một đối tượng chứa:
    • bookId (số)
    • rating (số từ 1 đến 5)
  2. Tìm sách có id trùng khớp trong thư viện
  3. Kiểm tra để đảm bảo rating là một số từ 1 đến 5
  4. Nếu tìm thấy sách và rating hợp lệ:
    • Đặt isRead thành true
    • Đặt rating thành giá trị được cung cấp
  5. Thêm thông báo phù hợp vào mảng results:
    • Book marked as read! khi cập nhật thành công
    • Invalid rating! Please rate between 1 and 5 khi rating không hợp lệ
    • Book not found! nếu không tồn tại sách có id đó

Tự làm thử

// Initialize library data
const libraryData = {
    books: [
        {
            id: 1,
            title: "The Great Gatsby",
            author: "F. Scott Fitzgerald",
            year: 1925,
            genre: "Fiction",
            isRead: false,
            rating: 0,
            borrowed: false,
            borrowedBy: "",
            borrowDate: ""
        }
    ],
    readers: [
        {
            name: "John Smith",
            favoriteGenre: "Fiction",
        }
    ]
};

function manageLibrary(actions, data) {
    let results = [];
    
    for (let i = 0; i < actions.length; i++) {
        const currentAction = actions[i];
        const currentData = data[i];
        
        switch (currentAction) {
            case 'printBooks':
                results.push(libraryData.books);
                break;
            case 'printReaders':
                results.push(libraryData.readers);
                break;
            case "addBook":
                // Add a new book to the library
                let newBook = {
                    id: libraryData.books.length + 1,
                    title: currentData.title,
                    author: currentData.author,
                    year: currentData.year,
                    genre: currentData.genre,
                    isRead: false,
                    rating: 0,
                    borrowed: false,
                    borrowedBy: "",
                    borrowDate: ""
                };
                libraryData.books.push(newBook);
                results.push("Book added successfully!");
                break;
            case "searchByTitle":
                // Search for books by title
                let searchResults = [];
                for(let i = 0; i < libraryData.books.length; i++) {
                    if(libraryData.books[i].title.toLowerCase().includes(currentData.toLowerCase())) {
                        searchResults.push(libraryData.books[i]);
                    }
                }
                results.push(searchResults);
                break;

          case "filterByGenre":
                // Filter books by genre
                let genreResults = [];
                for(let i = 0; i < libraryData.books.length; i++) {
                    if(libraryData.books[i].genre === currentData) {
                        genreResults.push(libraryData.books[i]);
                    }
                }
                results.push(genreResults);
                break;
            default:
                results.push("Invalid action!");
        }
    }

    return results;
}

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch JavaScript online