Clonage profond d'objet

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 apprendre à créer un clonage profond d'un objet en JavaScript. Nous utiliserons la récursivité pour cloner des primitifs, des tableaux et des objets tout en excluant les instances de classe. À la fin de ce laboratoire, vous serez capable de créer une copie complète d'un objet sans modifier l'original.


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/BasicConceptsGroup -.-> javascript/obj_manip("Object Manipulation") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") subgraph Lab Skills javascript/variables -.-> lab-28260{{"Clonage profond d'objet"}} javascript/data_types -.-> lab-28260{{"Clonage profond d'objet"}} javascript/arith_ops -.-> lab-28260{{"Clonage profond d'objet"}} javascript/comp_ops -.-> lab-28260{{"Clonage profond d'objet"}} javascript/cond_stmts -.-> lab-28260{{"Clonage profond d'objet"}} javascript/array_methods -.-> lab-28260{{"Clonage profond d'objet"}} javascript/obj_manip -.-> lab-28260{{"Clonage profond d'objet"}} javascript/destr_assign -.-> lab-28260{{"Clonage profond d'objet"}} end

Instructions pour cloner profondément un objet

Pour cloner profondément un objet, suivez ces étapes :

  1. Créez une nouvelle instance de terminal/SSH et tapez node pour commencer à pratiquer la programmation.
  2. Utilisez la récursivité pour cloner des primitifs, des tableaux et des objets, en excluant les instances de classe.
  3. Vérifiez si l'objet passé est null et, si c'est le cas, renvoyez null.
  4. Utilisez Object.assign() et un objet vide ({}) pour créer un clonage superficiel de l'original.
  5. Utilisez Object.keys() et Array.prototype.forEach() pour déterminer quelles paires clé-valeur doivent être clonées profondément.
  6. Si l'objet est un Array, définissez la length du clone sur celle de l'original et utilisez Array.from() pour créer un clone.
  7. Utilisez le code suivant pour implémenter le clonage profond :
const deepClone = (obj) => {
  if (obj === null) return null;
  let clone = Object.assign({}, obj);
  Object.keys(clone).forEach(
    (key) =>
      (clone[key] =
        typeof obj[key] === "object" ? deepClone(obj[key]) : obj[key])
  );
  if (Array.isArray(obj)) {
    clone.length = obj.length;
    return Array.from(clone);
  }
  return clone;
};

Utilisez le code suivant pour tester votre fonction de clonage profond :

const a = { foo: "bar", obj: { a: 1, b: 2 } };
const b = deepClone(a); // a!== b, a.obj!== b.obj

Résumé

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