Menu
CoddyTech

تحديد كمقروء

جزء من قسم المنطق وتدفق التنفيذ في رحلة JavaScript على Coddy. الدرس 46 من 65.

challenge icon

التحدي

سهل

أضف حالة جديدة markAsRead إلى جملة switch. يجب أن تجعل هذه العملية الكتب مقروءة وتضيف التقييمات.

بالنسبة إلى حالة markAsRead:

  1. المعامل currentData عبارة عن كائن يحتوي على:
    • bookId (رقم)
    • rating (رقم من 1 إلى 5)
  2. اعثر على الكتاب ذي المعرّف المطابق في المكتبة
  3. تحقّق من أن التقييم رقم بين 1 و5
  4. إذا عُثر على الكتاب وكان التقييم صالحًا:
    • عيّن isRead إلى true
    • عيّن rating إلى القيمة المقدّمة
  5. أضف الرسائل المناسبة إلى مصفوفة results:
    • Book marked as read! عند نجاح التحديث
    • Invalid rating! Please rate between 1 and 5 عندما يكون التقييم غير صالح
    • Book not found! إذا لم يكن معرّف الكتاب موجودًا

جرّب بنفسك

// 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;
}

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت