Introdução
Neste laboratório, exploraremos o conceito de criação de uma função geradora que percorre todas as chaves de um determinado objeto usando recursão. O objetivo deste laboratório é fornecer uma experiência prática para os alunos entenderem como usar as expressões yield e yield* em combinação com loops for...of e Object.keys() para iterar sobre as chaves do objeto e seus valores. Ao final deste laboratório, os alunos terão uma compreensão prática de como percorrer recursivamente um objeto e gerar um array de chaves representando o caminho atual e os valores correspondentes.
Percorrendo as Chaves do Objeto (Code Walk Through Object Keys)
Para gerar uma lista de todas as chaves de um determinado objeto, use as seguintes etapas:
Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação.Defina uma função geradora chamada
walkque recebe um objeto e um array de chaves. Use recursão para percorrer todas as chaves do objeto.Dentro da função
walk, use um loopfor...ofeObject.keys()para iterar sobre as chaves do objeto.Use
typeofpara verificar se cada valor no objeto fornecido é, por si só, um objeto. Se o valor for um objeto, use a expressãoyield*para delegar recursivamente à mesma função geradora,walk, anexando akeyatual ao array de chaves.Caso contrário,
yieldum array de chaves representando o caminho atual e o valor dakeyfornecida.Use a expressão
yield*para delegar à função geradorawalk.
Aqui está o código:
const walkThrough = function* (obj) {
const walk = function* (x, previous = []) {
for (let key of Object.keys(x)) {
if (typeof x[key] === "object") yield* walk(x[key], [...previous, key]);
else yield [[...previous, key], x[key]];
}
};
yield* walk(obj);
};
Para testar o código, crie um objeto e use a função walkThrough para gerar uma lista de todas as suas chaves:
const obj = {
a: 10,
b: 20,
c: {
d: 10,
e: 20,
f: [30, 40]
},
g: [
{
h: 10,
i: 20
},
{
j: 30
},
40
]
};
[...walkThrough(obj)];
/*
[
[['a'], 10],
[['b'], 20],
[['c', 'd'], 10],
[['c', 'e'], 20],
[['c', 'f', '0'], 30],
[['c', 'f', '1'], 40],
[['g', '0', 'h'], 10],
[['g', '0', 'i'], 20],
[['g', '1', 'j'], 30],
[['g', '2'], 40]
]
*/
Resumo
Parabéns! Você concluiu o laboratório de Percorrendo o Objeto (Walk Through Object). Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.