🔁 ItĂ©rer sur des objets

🔁 ItĂ©rer sur des objets

(« Mais comment je boucle lĂ -dessus en JavaScript ?! » — cet article est pour toi)


🧠 D’abord, on se dĂ©tend : qu’est-ce que “l’itĂ©ration” ?

L’itĂ©ration, c’est en fait trĂšs simple :

👉 AccĂ©der aux Ă©lĂ©ments d’une chose, un par un

On le fait déjà dans la vraie vie :

  • 🍕 On mange une pizza part tranche par tranche
  • đŸ“ș On regarde une sĂ©rie Ă©pisode par Ă©pisode
  • 🎧 On Ă©coute une playlist morceau par morceau

En JavaScript, certaines structures disent :

« Tu peux me parcourir Ă©tape par Ă©tape, roi 😎 »

Ces structures s’appellent des Iterables.


đŸ€“ Que veut dire “Iterable” ? (DĂ©finition lĂ©gendaire en une phrase)

Un iterable, c’est quelque chose que tu peux parcourir avec for...of.

C’est tout.
Le reste, c’est de l’overthinking 😄


✅ Quelles structures sont iterables ? (La liste en or)

Les structures iterables par défaut en JavaScript :

StructureIterable ?
Array✅
String✅
Map✅
Set✅
arguments✅
NodeList✅
Objet simple {}❌ (on va se chamailler là-dessus bientît)

🎱 Parcourir un tableau (le plus facile)

const fruits = ["🍎", "🍌", "🍉"];

for (let fruit of fruits) {
  console.log(fruit);
}

🧠 Que se passe-t-il ici ?

  • for...of → donne la valeur elle-mĂȘme
  • fruit → un Ă©lĂ©ment Ă  chaque tour
  • RĂ©sultat :
🍎
🍌
🍉

📌 Astuce :
for...of = « donne-moi la valeur »
for...in = « donne-moi la clé » (on y arrive)


đŸ”€ Les strings sont aussi iterables (surprise !)

const name = "Cansu";

for (let char of name) {
  console.log(char);
}

🧠 RĂ©sultat :

C
a
n
s
u

💡 Mini-info :
JavaScript peut découper une string caractÚre par caractÚre
Ça marche aussi avec les emojis 😎


🚹 Grosse dĂ©ception : pourquoi on ne peut pas itĂ©rer sur un objet ?

const user = {
  name: "Cansu",
  age: 25
};

for (let item of user) {
  console.log(item);
}

đŸ’„ ERREUR !

JavaScript dit :

« FrĂ©rot
 aucune idĂ©e de comment parcourir ça đŸ€·â€â™‚ïž »

Parce que :

  • Les objets n’ont pas d’ordre garanti
  • JavaScript ne sait pas quelle rĂšgle suivre

MAIS

Nous, on est plus malins que JavaScript 😏


đŸ› ïž Les façons d’itĂ©rer sur un objet

(Le trio sauve-la-vie)


1ïžâƒŁ Object.keys() – Parcourir les clĂ©s

const user = {
  name: "Cansu",
  age: 25,
  job: "Frontend Dev"
};

const keys = Object.keys(user);

for (let key of keys) {
  console.log(key);
}

🧠 Explication :

  • Object.keys(user) → ["name", "age", "job"]
  • On a maintenant un tableau
  • Tableau = iterable 😎

📌 Quand l’utiliser ?
Quand seules les clĂ©s t’intĂ©ressent.


2ïžâƒŁ Object.values() – Parcourir les valeurs

const values = Object.values(user);

for (let value of values) {
  console.log(value);
}

🧠 RĂ©sultat :

Cansu
25
Frontend Dev

📌 Quand l’utiliser ?
Quand les clĂ©s n’importent pas et que tu veux juste les valeurs.


3ïžâƒŁ Object.entries() – MODE LÉGENDAIRE đŸ”„

const entries = Object.entries(user);

for (let [key, value] of entries) {
  console.log(`${key} → ${value}`);
}

🧠 RĂ©sultat :

name → Cansu
age → 25
job → Frontend Dev

📌 Pourquoi c’est gĂ©nial ?

  • Tu obtiens la clĂ© et la valeur
  • Destructuring ✹
  • Propre, lisible, moderne

Ça donne un vrai vibe de dev senior 😎


⚔ for...in vs for...of (on clarifie)

for...in

for (let key in user) {
  console.log(key);
}

  • Retourne les clĂ©s
  • Fonctionne sur les objets
  • RisquĂ© Ă  cause de la chaĂźne de prototypes 😬

for...of

for (let item of array) {
  console.log(item);
}

  • Retourne les valeurs
  • NĂ©cessite un iterable
  • Moderne et sĂ»r ✅

📌 Rùgle d’or :
Objet + JS moderne = Object.entries() + for...of


đŸ§™â€â™‚ïž La vraie magie : Symbol.iterator

Si quelque chose est iterable, il possĂšde cette porte secrĂšte :

Symbol.iterator

Quand JavaScript voit ça, il se dit :

« OK, je sais comment parcourir ça. »


đŸ› ïž CrĂ©ons notre propre objet iterable (Level Up âŹ†ïž)

const counter = {
  start: 1,
  end: 5,
  [Symbol.iterator]() {
    let current = this.start;
    let last = this.end;

    return {
      next() {
        if (current <= last) {
          return { value: current++, done: false };
        }
        return { done: true };
      }
    };
  }
};

Utilisation :

for (let number of counter) {
  console.log(number);
}

🧠 RĂ©sultat :

1
2
3
4
5


🔍 Que se passe-t-il dans ce code ?

  • [Symbol.iterator]() → condition pour ĂȘtre iterable
  • next() → appelĂ© Ă  chaque tour
  • value → valeur courante
  • done: true → « c’est fini » 🚩

📌 À quoi ça sert ?

  • Structures de donnĂ©es personnalisĂ©es
  • ContrĂŽle des boucles infinies
  • Comprendre les generators en profondeur

🎁 BONUS : la version facile avec les generators

function* counterGen(start, end) {
  for (let i = start; i <= end; i++) {
    yield i;
  }
}

for (let num of counterGen(1, 5)) {
  console.log(num);
}

💡 Plus court
💡 Plus lisible
💡 Plus moderne


🧠 Super astuces (à sauvegarder ⭐)

  • forEach → break ne fonctionne pas
  • for...of → break & continue fonctionnent
  • Besoin de performance ? → for...of
  • Parcourir un objet ? → Object.entries()

💬 Conclusion (avec le cƓur)

Tout n’est pas iterable en JavaScript

mais ceux qui savent rendre les choses iterables gagnent la partie 😌✹

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile ißaretlenmißlerdir