Introducción
En este laboratorio, exploraremos el concepto de crear una función generadora que recorre todas las claves de un objeto dado utilizando la recursividad. El objetivo de este laboratorio es brindar una experiencia práctica a los aprendices para que comprendan cómo utilizar las expresiones yield y yield* en combinación con los bucles for...of y Object.keys() para iterar sobre las claves y valores de un objeto. Al final de este laboratorio, los aprendices tendrán una comprensión práctica de cómo recorrer recursivamente un objeto y generar una matriz de claves que representen el camino actual y los valores correspondientes.
Recorrido del código por las claves de un objeto
Para generar una lista de todas las claves de un objeto dado, siga los siguientes pasos:
Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación.Defina una función generadora llamada
walkque tome un objeto y una matriz de claves. Utilice la recursividad para recorrer todas las claves del objeto.Dentro de la función
walk, utilice un buclefor...ofyObject.keys()para iterar sobre las claves del objeto.Utilice
typeofpara comprobar si cada valor en el objeto dado es a su vez un objeto. Si el valor es un objeto, utilice la expresiónyield*para delegar recursivamente a la misma función generadora,walk, agregando lakeyactual a la matriz de claves.De lo contrario,
yielduna matriz de claves que representen el camino actual y el valor de lakeydada.Utilice la expresión
yield*para delegar a la función generadorawalk.
Aquí está el 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 probar el código, cree un objeto y utilice la función walkThrough para generar una lista de todas sus claves:
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]
]
*/
Resumen
¡Felicidades! Has completado el laboratorio de Recorrido del código por las claves de un objeto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.