Maison  >  Article  >  interface Web  >  Comment définir dynamiquement les propriétés dans les objets JavaScript imbriqués ?

Comment définir dynamiquement les propriétés dans les objets JavaScript imbriqués ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 08:16:29286parcourir

How to Dynamically Set Properties in Nested JavaScript Objects?

Affectation dynamique des propriétés dans les objets imbriqués

La définition des propriétés des objets imbriqués peut être une tâche complexe du point de vue du programme, en particulier lorsque le chemin et la valeur de la propriété peuvent varier en profondeur et en type. Pour simplifier ce processus, nous pouvons créer une fonction qui parcourt et définit dynamiquement les propriétés au sein d'un objet.

Implémentation de la fonction

<code class="javascript">function set(path, value) {
    var schema = obj; // Moving reference to internal objects within obj
    var pList = path.split('.');
    var len = pList.length;

    for (var i = 0; i < len - 1; i++) {
        var elem = pList[i];
        if (!schema[elem]) schema[elem] = {};
        schema = schema[elem];
    }

    schema[pList[len - 1]] = value;
}</code>

Exemple d'utilisation

Considérez l'objet imbriqué suivant :

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

Pour définir une propriété sur un chemin spécifique, nous pouvons utiliser la fonction set() :

<code class="javascript">set('db.mongodb.user', 'root');</code>

Résultat

Application de la fonction set() à l'exemple d'objet produirait :

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

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!

Déclaration:
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