Front-end · 6 mondes · 18 étapes
JavaScript
Le langage du web : types, fonctions, tableaux, objets et asynchrone.
Progression
0 %
0/18 étapes terminées
Intermédiaire · 10 min de lecture
Tableaux et objets
Transformer des données sans les abîmer
1Définition
Tableaux et objets sont les deux structures de données de JavaScript. Les méthodes map, filter et reduce transforment sans modifier l'original ; la décomposition ... copie. Ne jamais modifier une donnée partagée, mais en fabriquer une nouvelle : c'est l'immuabilité.
2Principes fondamentaux
01
Méthodes pures et méthodes qui modifient
map, filter, reduce, slice renvoient du neuf ; push, sort, splice, reverse modifient sur place.
02
Copier avant de trier
[...liste].sort(...) protège l'original.
03
Un comparateur pour les nombres
sort((a, b) => a - b) ; sans lui, le tri compare des textes.
04
Déstructurer pour lire
const { nom, score } = fiche rend les intentions explicites.
3Exemples pratiques
Une chaîne complète
1const podium = joueurs2 .filter((j) => j.score >= 1000)3 .sort((a, b) => b.score - a.score)4 .slice(0, 3)5 .map((j, i) => `${i + 1}. ${j.nom}`);Chaque ligne fait une chose, et la liste d'origine n'est jamais modifiée — filter a fourni la copie que sort réorganise.
Mettre à jour sans modifier
1const fiche = { nom: "codey", score: 4200 };2const promue = { ...fiche, score: 5000 };3 4const liste = [1, 2, 3];5const allongee = [...liste, 4];C'est exactement la façon dont React attend qu'on mette à jour son état.
4Erreurs courantes
Trier l'original par accident
À éviter
const tries = joueurs.sort(…);À faire
const tries = [...joueurs].sort(…);Pourquoi : sort modifie le tableau sur lequel on l'appelle : joueurs serait trié lui aussi.
reduce sans valeur de départ
À éviter
prix.reduce((a, p) => a + p)À faire
prix.reduce((a, p) => a + p, 0)Pourquoi : Sur un tableau vide, la première forme lève une TypeError.
Copier par affectation
À éviter
const copie = fiche;À faire
const copie = { ...fiche };Pourquoi : Les deux noms désignent le même objet.
5Subtilités à connaître
- ◆La décomposition copie en surface : les objets imbriqués restent partagés.
structuredClonefait une copie profonde. - ◆
toSorted()ettoReversed(), plus récents, font la même chose quesortetreversesans modifier l'original. - ◆
Object.entries(objet)transforme un objet en tableau de paires, ce qui ouvre toutes les méthodes de tableau aux objets.
6Vérifie ta compréhension
Question 1/3
Score 0
Laquelle modifie le tableau d'origine ?
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.