Maison > interface Web > js tutoriel > Comment attribuer dynamiquement des propriétés à des objets imbriqués en JavaScript ?

Comment attribuer dynamiquement des propriétés à des objets imbriqués en JavaScript ?

Barbara Streisand
Libérer: 2024-10-29 06:50:02
original
530 Les gens l'ont consulté

How Can You Dynamically Assign Properties to Nested Objects in JavaScript?

Attribution dynamique de propriétés pour les objets imbriqués

Dans le domaine de JavaScript, les objets peuvent être des structures complexes avec différents niveaux de profondeur et de propriétés. Nous rencontrons souvent des scénarios dans lesquels nous devons attribuer ou écraser dynamiquement des propriétés dans des objets profondément imbriqués. Cela peut s'avérer difficile, en particulier lorsque le chemin et la valeur de la propriété peuvent être arbitraires.

Le défi :

Étant donné un objet avec un nombre arbitraire de niveaux et de propriétés, nous cherchez une fonction qui nous permet de définir (ou d'écraser) des propriétés de manière dynamique à l'aide d'une représentation sous forme de chaîne du chemin de la propriété, comme indiqué ci-dessous :

<code class="javascript">var obj = {
  db: {
    mongodb: {
      host: 'localhost',
    },
  },
};

// Set a new property
set('db.mongodb.user', 'root');</code>
Copier après la connexion

La solution :

Pour relever ce défi, nous introduisons une fonction nommée set qui modifie dynamiquement les propriétés des objets imbriqués. Vous trouverez ci-dessous l'implémentation :

<code class="javascript">function set(path, value) {
  var schema = obj; // Moving reference to internal objects within 'obj'
  var pList = path.split('.'); // Split the property path into an array of elements
  var len = pList.length;
  for (var i = 0; i < len - 1; i++) {
    var elem = pList[i];
    if (!schema[elem]) schema[elem] = {}; // If the element doesn't exist, create an empty object
    schema = schema[elem]; // Advance the schema reference to the next level
  }

  schema[pList[len - 1]] = value; // Update or create the property at the leaf level
}</code>
Copier après la connexion

Utilisation :

Pour définir une propriété, transmettez simplement le chemin de la propriété et la valeur correspondante à la fonction définie comme indiqué dans l'exemple. ci-dessous :

<code class="javascript">set('db.mongodb.user', 'root');</code>
Copier après la connexion

Sortie :

L'objet résultant après avoir défini la propriété de manière dynamique :

<code class="javascript">{
  db: {
    mongodb: {
      host: 'localhost',
      user: 'root',
    },
  },
}</code>
Copier après la connexion

Grâce à cette fonction, nous obtenons le flexibilité pour modifier les propriétés imbriquées de manière dynamique, permettant une manipulation d'objets efficace et polyvalente.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal