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éthodeModifie l'original ?Retourne quoi ?
sort()OuiLe tableau trié (le même objet)
filter()NonUn 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 :

  1. Crée parNote : trié par note croissante (3.0 → 6.0)
  2. 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é