Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 12 · Exercice de TD

Un filtre par rayon

Projet : la Librairie interactive · niveau 2

Énoncé

Ajouter au catalogue une liste « Rayon » dont les options (« Tous les rayons », puis chaque rayon) sont construites à partir des livres reçus, sans doublon et dans l'ordre alphabétique. Le choix se combine avec la recherche et le tri, et se garde dans l'adresse (?rayon=Littérature). Écrire et tester les fonctions pures rayons(livres) et filtrerRayon(livres, rayon), puis décrire les changements dans vue, lireEtat et activerCatalogue.

Corrigé


export function rayons(livres) {
  return [...new Set(livres.map((l) => l.rayon))].sort((a, b) => a.localeCompare(b, "fr"));
}

export function filtrerRayon(livres, rayon) {
  return rayon ? livres.filter((l) => l.rayon === rayon) : livres;
}

Testées sur cinq livres : quatre rayons, de « Informatique » à « Physique » ; deux livres en « Littérature » ; tous pour un rayon vide. Dans vue, on enchaîne les trois étapes :


return trier(filtrer(filtrerRayon(livres, rayon), q), tri);

De son côté, lireEtat lit le paramètre rayon et l'ignore s'il ne figure pas dans rayons(livres) ; activerCatalogue remplit le <select> (une option par rayon, créée avec new Option(texte, valeur)), l'écoute (change) et ajoute rayon à l'état écrit dans l'adresse. Construire les options à partir des données, et non dans le HTML, évite qu'un nouveau rayon du serveur soit oublié.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →