Création d'un objet itérable en JavaScript

Créons un véritable objet itérable qui pourra être parcouru par une boucle for-of. Pour cela, l'objet doit ajouter une fonction correspondante dans Symbol.iterator.

Implémentons cela. Supposons que nous ayons l'objet suivant :

javascriptlet obj = {
  a: 1,
  b: 2,
  c: 3,
};

Ajoutons une fonction à Symbol.iterator :

javascriptobj[Symbol.iterator] = function() {

}

Transformons cette fonction en générateur :

javascriptobj[Symbol.iterator] = function *() {

}

À l'intérieur de notre fonction, this fera référence à l'objet lui-même :

javascriptobj[Symbol.iterator] = function *() {
  console.log(this); // l'objet lui-même
}

Lançons le parcours de l'objet dans l'itérateur :

javascriptobj[Symbol.iterator] = function *() {
  for (let key in this) {
    yield obj[key];
  }
}

Voilà, l'objet peut être parcouru par une boucle for-of :

javascriptfor (let elem of obj) {
  console.log(elem); // 1, 2, 3
}
Задание 1

Créez un objet qui peut être parcouru par une boucle for-of. Que l'élément de la boucle soit un objet, dans la clé key duquel se trouvera la clé de l'objet parcouru, et dans la clé val - la valeur. Exemple :

javascriptlet obj = {a: 1, b: 2, c: 3};

for (let elem of obj) {
  console.log(elem);
}

Affichera :

javascript{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}