IntermédiaireNon commencé
Exercice 10.4 · 15 min · 0 tentative
Tri et filtre par catégorie
🎯 Objectif
Ajouter le tri par prix/nom et le filtre par catégorie aux produits.
📖 Contexte
L'app a déjà la recherche par titre. On va ajouter deux fonctionnalités supplémentaires : trier les résultats et filtrer par catégorie. Les trois filtres se combinent !
sort() : trier un tableau
sort() modifie le tableau original. Pour éviter ça, on travaille sur une copie :
const copie = tableau.slice() // Copie du tableau
// Tri numérique (par prix)
copie.sort(function(a, b) {
return a.price - b.price // Croissant
})
// Tri alphabétique (par nom)
copie.sort(function(a, b) {
return a.title.localeCompare(b.title) // A → Z
})
La fonction de comparaison
sort() attend une fonction qui compare deux éléments :
- Retourne négatif →
avient avantb - Retourne positif →
bvient avanta - Retourne 0 → même position
| Tri | Code |
|---|---|
| Prix ↑ | a.price - b.price |
| Prix ↓ | b.price - a.price |
| Nom A→Z | a.title.localeCompare(b.title) |
| Nom Z→A | b.title.localeCompare(a.title) |
Combiner les filtres
L'idée est d'avoir une seule fonction appliquerFiltres() qui applique tout dans l'ordre :
- Recherche par texte
- Filtre par catégorie
- Tri
📝 Consigne
- Complète
trierProduits(liste, critere): utilise.sort()pour trier selon le critère choisi - Complète le filtre par catégorie dans
appliquerFiltres(): si une catégorie est sélectionnée, ne garde que les produits de cette catégorie - Ajoute les addEventListener sur
#categorieet#tri(événement"change")
Astuce : localeCompare() compare deux textes en respectant l'ordre alphabétique de la langue (accents, etc.).
Objectifs
- Utiliser sort()
- Select des catégories existe
- Select du tri existe
- Écouter le changement de catégorie
- Écouter le changement de tri
- Filtrer par catégorie
Lis bien les instructions et lance-toi !
Indices (0/3)
Indice 1 verrouillé
Indice 2 verrouillé
Indice 3 verrouillé