Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحديد كمقروء

جزء من قسم Logic & Flow في رحلة JavaScript على Coddy. الدرس 46 من 65.

challenge icon

التحدي

سهل

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

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

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

جرّب بنفسك

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

جميع دروس Logic & Flow

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