Suppression des valeurs fausses par récursion en JavaScript

JavaScriptJavaScriptBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons explorer la manière d'utiliser la récursion pour supprimer profondément toutes les valeurs fausses d'un objet ou d'un tableau en JavaScript. Nous allons créer une fonction qui prend un objet ou un tableau en entrée et renvoie un nouvel objet ou tableau compacté ne contenant que les valeurs véridiques. Cette technique peut être utile pour le nettoyage et la simplification des données dans diverses applications de programmation.


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{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/data_types -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/arith_ops -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/comp_ops -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/cond_stmts -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/array_methods -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} javascript/higher_funcs -.-> lab-28206{{"Suppression des valeurs fausses par récursion en JavaScript"}} end

Algorithme pour compactifier un objet

Pour supprimer profondément toutes les valeurs fausses d'un objet ou d'un tableau, utilisez l'algorithme suivant :

  1. Utilisez la récursion pour appeler la fonction compactObject() sur chaque objet ou tableau imbriqué.
  2. Initialisez les données itérables à l'aide de Array.isArray(), Array.prototype.filter() et Boolean(). Cela est fait pour éviter les tableaux creux.
  3. Utilisez Object.keys() et Array.prototype.reduce() pour itérer sur chaque clé avec une valeur initiale appropriée.
  4. Utilisez Boolean() pour déterminer la véracité de la valeur de chaque clé et l'ajoutez à l'accumulateur si elle est véridique.
  5. Utilisez typeof pour déterminer si une valeur donnée est un objet et appelez la fonction à nouveau pour la compactifier profondément.

Voici le code pour la fonction 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) ? [] : {}
  );
};

Pour utiliser cette fonction, passez un objet ou un tableau en tant qu'argument à compactObject(). La fonction renverra un nouvel objet ou tableau avec toutes les valeurs fausses supprimées.

Par exemple :

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' } }

Sommaire

Félicitations ! Vous avez terminé le laboratoire Compact Object. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.