Criação de um objeto iterável em JavaScript

Vamos criar um verdadeiro objeto iterável que possa ser percorrido com um loop for-of. Para isso, o objeto precisa ter uma função específica adicionada em Symbol.iterator.

Vamos implementar. Suponha que temos o seguinte objeto:

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

Vamos adicionar a função em Symbol.iterator:

javascriptobj[Symbol.iterator] = function() {

}

Vamos transformar esta função em um gerador:

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

}

Dentro da nossa função, this irá referenciar o próprio objeto:

javascriptobj[Symbol.iterator] = function *() {
  console.log(this); // o próprio objeto
}

Vamos executar a iteração do objeto dentro do iterador:

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

Pronto, o objeto agora pode ser percorrido pelo loop for-of:

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

Crie um objeto que possa ser percorrido com o loop for-of. Deixe que o elemento do loop seja um objeto, onde a chave key contenha a chave do objeto que está sendo iterado, e a chave val contenha o valor. Exemplo:

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

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

Irá exibir:

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