Menu
Coddy logo textTech

Filtrar por género

Parte de la sección Lógica y Flujo del Journey de JavaScript de Coddy. Lección 45 de 65.

challenge icon

Desafío

Fácil

Agrega un nuevo caso filterByGenre a tu sentencia switch. Esta acción debe filtrar los libros por su género.

Para el caso filterByGenre:

  1. El parámetro currentData es un string que representa el género por el cual filtrar
  2. Crea un array vacío filteredResults para almacenar los resultados filtrados
  3. Recorre todos los libros en la biblioteca
  4. Para cada libro, verifica si su género coincide exactamente con el género solicitado
  5. Si hay una coincidencia, agrega el libro al array filteredResults
  6. Agrega filteredResults al array principal results

Pruébalo tú mismo

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

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de JavaScript online