Eliminación recursiva de valores falsos en JavaScript

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 cómo usar la recursividad para eliminar profundamente todos los valores falsos de un objeto o matriz en JavaScript. Crearemos una función que tome un objeto o matriz como entrada y devuelva un nuevo objeto o matriz compactado con solo valores truthy. Esta técnica puede ser útil para la limpieza y simplificación de datos en diversas aplicaciones de programación.


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/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") subgraph Lab Skills javascript/variables -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/data_types -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/arith_ops -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/comp_ops -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/cond_stmts -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/array_methods -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} javascript/higher_funcs -.-> lab-28206{{"Eliminación recursiva de valores falsos en JavaScript"}} end

Algoritmo para objeto compacto

Para eliminar profundamente todos los valores falsos de un objeto o matriz, utilice el siguiente algoritmo:

  1. Utilice la recursividad para llamar a la función compactObject() en cada objeto o matriz anidada.
  2. Inicialice los datos iterables utilizando Array.isArray(), Array.prototype.filter() y Boolean(). Esto se hace para evitar matrices dispersas.
  3. Utilice Object.keys() y Array.prototype.reduce() para iterar sobre cada clave con un valor inicial adecuado.
  4. Utilice Boolean() para determinar la verdadera validez del valor de cada clave y agréguelo al acumulador si es verdadero.
  5. Utilice typeof para determinar si un valor dado es un object y llame a la función nuevamente para compactarlo profundamente.

Aquí está el código para la función compactObject():

const compactObject = (val) => {
  const data = Array.isArray(val) ? val.filter(Boolean) : val;
  return Object.keys(data).reduce(
    (acc, key) => {
      const value = data[key];
      if (Boolean(value))
        acc[key] = typeof value === "object" ? compactObject(value) : value;
      return acc;
    },
    Array.isArray(val) ? [] : {}
  );
};

Para utilizar esta función, pase un objeto o matriz como argumento a compactObject(). La función devolverá un nuevo objeto o matriz con todos los valores falsos eliminados.

Por ejemplo:

const obj = {
  a: null,
  b: false,
  c: true,
  d: 0,
  e: 1,
  f: "",
  g: "a",
  h: [null, false, "", true, 1, "a"],
  i: { j: 0, k: false, l: "a" }
};
compactObject(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }

Resumen

¡Felicitaciones! Has completado el laboratorio de Objeto Compacto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.