DébutantNon commencé
Exercice 6.7 · 8 min · 0 tentative
Trier un tableau d'objets
🎯 Objectif
Utiliser sort() pour ordonner des objets selon une de leurs propriétés (nombre ou texte).
📖 Contexte
Pour trier des objets, on utilise une fonction de comparaison qui accède aux propriétés :
Tri par propriété numérique
const produits = [
{ nom: "Café", prix: 4.50 },
{ nom: "Thé", prix: 3.00 },
{ nom: "Jus", prix: 5.00 }
]
// Du moins cher au plus cher
produits.sort((a, b) => a.prix - b.prix)
// Thé (3.00), Café (4.50), Jus (5.00)
// Du plus cher au moins cher
produits.sort((a, b) => b.prix - a.prix)
// Jus (5.00), Café (4.50), Thé (3.00)
Tri par propriété texte
Pour les chaînes de caractères, utilise localeCompare() :
const personnes = [
{ nom: "Zoé" },
{ nom: "Alice" },
{ nom: "Éric" } // Accent !
]
// Ordre alphabétique
personnes.sort((a, b) => a.nom.localeCompare(b.nom))
// Alice, Éric, Zoé (les accents sont bien gérés)
Attention : sort() modifie le tableau !
const original = [{ nom: "B" }, { nom: "A" }]
// ❌ L'original est modifié
original.sort((a, b) => a.nom.localeCompare(b.nom))
// ✅ Créer une copie d'abord
const copie = [...original]
copie.sort((a, b) => a.nom.localeCompare(b.nom))
| Méthode | Modifie l'original ? | Retourne quoi ? |
|---|---|---|
sort() | Oui | Le tableau trié (le même objet) |
filter() | Non | Un nouveau tableau |
Important : sort() modifie directement le tableau original. Pour garder l'original intact, crée une copie avec [...tableau] avant de trier.
📝 Consigne
À partir du tableau d'élèves :
- Crée
parNote: trié par note croissante (3.0 → 6.0) - Crée
parNom: trié par nom alphabétique (Alice → Emma)
Astuce : [...eleves] crée une copie du tableau pour ne pas modifier l'original.
Résultat attendu :
Par note: ["Emma:3", "Bob:4", "David:5", "Alice:5.5", "Clara:6"]
Par nom: ["Alice", "Bob", "Clara", "David", "Emma"]
Objectifs
- Tri par note avec comparaison
- Tri par nom avec localeCompare
- Emma en premier par note
- Alice en premier par nom
Lis bien les instructions et lance-toi !
Indices (0/3)
Indice 1 verrouillé
Indice 2 verrouillé
Indice 3 verrouillé