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

التصفية حسب النوع

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

challenge icon

التحدي

سهل

أضف حالة filterByGenre جديدة إلى جملة switch الخاصة بك. يجب أن يقوم هذا الإجراء بتصفية الكتب حسب نوعها (genre).

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

  1. المعامل currentData هو سلسلة نصية تمثل النوع (genre) المراد التصفية بناءً عليه
  2. أنشئ مصفوفة فارغة filteredResults لتخزين النتائج المصفاة
  3. قم بالمرور عبر جميع الكتب في المكتبة
  4. لكل كتاب، تحقق مما إذا كان نوعه (genre) يطابق تماماً النوع المطلوب
  5. إذا كان هناك تطابق، أضف الكتاب إلى مصفوفة filteredResults
  6. أضف filteredResults إلى مصفوفة results الرئيسية

جرّب بنفسك

// 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;
            default:
                results.push("Invalid action!");
        }
    }

    return results;
}

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

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