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:
let obj = {
a: 1,
b: 2,
c: 3,
};
Vamos adicionar a função em Symbol.iterator:
obj[Symbol.iterator] = function() {
}
Vamos transformar esta função em um gerador:
obj[Symbol.iterator] = function *() {
}
Dentro da nossa função, this irá referenciar
o próprio objeto:
obj[Symbol.iterator] = function *() {
console.log(this); // o próprio objeto
}
Vamos executar a iteração do objeto dentro do iterador:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Pronto, o objeto agora pode ser percorrido pelo loop
for-of:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
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:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Irá exibir:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}