Recorrido del código por las claves de un objeto

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/data_types -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/arith_ops -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/comp_ops -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/cond_stmts -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/loops -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/array_methods -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} javascript/spread_rest -.-> lab-28693{{"Recorrido del código por las claves de un objeto"}} end

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:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.

  2. Defina una función generadora llamada walk que tome un objeto y una matriz de claves. Utilice la recursividad para recorrer todas las claves del objeto.

  3. Dentro de la función walk, utilice un bucle for...of y Object.keys() para iterar sobre las claves del objeto.

  4. Utilice typeof para comprobar si cada valor en el objeto dado es a su vez un objeto. Si el valor es un objeto, utilice la expresión yield* para delegar recursivamente a la misma función generadora, walk, agregando la key actual a la matriz de claves.

  5. De lo contrario, yield una matriz de claves que representen el camino actual y el valor de la key dada.

  6. Utilice la expresión yield* para delegar a la función generadora walk.

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.