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>
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>
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>
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>
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!