Maison > interface Web > Voir.js > Méthode d'implémentation de la fonction d'accès approfondi aux propriétés du tableau d'objets dans le document Vue

Méthode d'implémentation de la fonction d'accès approfondi aux propriétés du tableau d'objets dans le document Vue

王林
Libérer: 2023-06-20 14:07:18
original
1240 Les gens l'ont consulté

Vue est un framework JavaScript populaire pour développer des applications monopage (SPA). Vue propose de nombreuses méthodes pratiques pour travailler avec des données. Lorsque nous utilisons Vue pour gérer des tableaux d'objets, nous devons souvent accéder à des propriétés approfondies imbriquées dans le tableau d'objets. Cet article explique comment utiliser les fonctions d'accès approfondi aux propriétés fournies dans la documentation Vue pour gérer les propriétés imbriquées dans un tableau d'objets.

Dans la documentation Vue, il existe une méthode appelée $set, qui nous permet d'ajouter dynamiquement des propriétés à l'objet. Si vous souhaitez ajouter dynamiquement une propriété imbriquée à un nouvel objet, vous pouvez utiliser le code suivant :

let data = {
    myObject: {}
}
Vue.set(data.myObject, 'myProperty', 'myValue');
Copier après la connexion

Afin d'accéder aux propriétés de l'objet imbriqué, vous pouvez utiliser le code suivant :

let myObject = {
    myPropertyA: {
        myPropertyB: {
            myPropertyC: 'myValue'
        }
    }
};
let myValue = myObject['myPropertyA']['myPropertyB']['myPropertyC'];
Copier après la connexion

Mais lorsque le niveau d'imbrication est plus profond, cette méthode peut devenir très verbeuse. Afin de rendre le code plus simple et plus lisible, Vue fournit quelques fonctions utilitaires. Voici comment ces fonctions sont implémentées :

Tout d'abord, nous devons écrire une fonction récursive pour accéder aux propriétés imbriquées. Cette fonction prendra deux paramètres : un objet et un chemin de propriété. Comme indiqué ci-dessous :

function getNestedProperty(obj, propertyPath) {
    if (typeof propertyPath === 'string') {
        propertyPath = propertyPath.split('.');
    }
    if (propertyPath.length === 1) {
        return obj[propertyPath[0]];
    } else {
        let nextObj = obj[propertyPath[0]];
        let nextPath = propertyPath.slice(1);
        return getNestedProperty(nextObj, nextPath);
    }
}
Copier après la connexion

Dans cette fonction, vérifiez d'abord si le chemin de la propriété est une chaîne. S'il s'agit d'une chaîne, divisez-la en tableau. Ensuite, si le tableau de chemin d'attribut ne comporte qu'un seul élément, la valeur d'attribut dans l'objet est renvoyée. Sinon, obtenez la valeur de propriété du premier élément de cet objet et utilisez un appel récursif à la fonction pour obtenir la propriété dans le prochain objet imbriqué. La sortie récursive consiste à renvoyer la valeur de l'attribut lorsque le tableau du chemin de l'attribut ne peut pas être divisé davantage.

Maintenant, nous devons écrire une méthode setter pour définir la propriété imbriquée. Cette méthode prendra trois paramètres : un objet, un chemin de propriété et une nouvelle valeur. Comme indiqué ci-dessous :

function setNestedProperty(obj, propertyPath, value) {
    if (typeof propertyPath === 'string') {
        propertyPath = propertyPath.split('.');
    }
    if (propertyPath.length === 1) {
        Vue.set(obj, propertyPath[0], value);
    } else {
        let nextObj = obj[propertyPath[0]];
        if (!nextObj) {
            Vue.set(obj, propertyPath[0], {});
            nextObj = obj[propertyPath[0]];
        }
        let nextPath = propertyPath.slice(1);
        setNestedProperty(nextObj, nextPath, value);
    }
}
Copier après la connexion

Dans cette méthode, vérifiez d'abord si le chemin de la propriété est une chaîne. S'il s'agit d'une chaîne, divisez-la en tableau. Si le tableau du chemin de propriété ne contient qu'un seul élément, utilisez la méthode $set de Vue pour définir la propriété de l'objet sur une nouvelle valeur. Sinon, obtenez la valeur d'attribut du premier élément de cet objet et utilisez la fonction d'ajout récursive pour obtenir l'attribut dans le prochain objet imbriqué. La sortie récursive consiste à utiliser la méthode $set de Vue pour définir la valeur de la propriété lorsque le tableau du chemin de la propriété ne peut plus être divisé.

Utilisez ces fonctions pour accéder et définir des propriétés imbriquées dans un tableau d'objets. Voici un exemple :

let myData = {
    myArray: [
        {
            myObject: {
                myPropertyA: {
                    myPropertyB: {
                        myPropertyC: 'myValue'
                    }
                }
            }
        }
    ]
};
let myValue = getNestedProperty(myData, 'myArray.0.myObject.myPropertyA.myPropertyB.myPropertyC'); // myValue = 'myValue'

setNestedProperty(myData, 'myArray.0.myObject.myPropertyA.myPropertyB.myPropertyC', 'newValue');
Copier après la connexion

Dans cet article, nous avons présenté les fonctions d'accès approfondi aux propriétés dans la documentation Vue et fourni deux méthodes d'implémentation : getNestedProperty et setNestedProperty. Ces fonctions facilitent l'accès et la définition des propriétés imbriquées dans un tableau d'objets, sans rendre le code très verbeux.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal