Maison >interface Web >js tutoriel >Comment accéder aux propriétés des objets imbriqués à l'aide de chaînes de notation par points en JavaScript ?

Comment accéder aux propriétés des objets imbriqués à l'aide de chaînes de notation par points en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-30 02:19:12486parcourir

How to Access Nested Object Properties Using Dot Notation Strings in JavaScript?

Accès aux propriétés enfants de l'objet via une chaîne de notation par points

Lorsqu'il s'agit d'objets imbriqués, l'accès à des propriétés profondément enfouies peut être fastidieux. Déterminer la manière idéale d'y parvenir à l'aide d'une notation par points a intrigué de nombreux développeurs.

Considérons un objet défini comme suit :

var r = { a: 1, b: { b1: 11, b2: 99 } };

Pour accéder à la valeur de b2, vous pouvez généralement utiliser :

r.b.b2
r['b']['b2']

Cependant, définir une chaîne comme var s = "b.b2" et tenter d'accéder à r[s] ou r.s échouera.

Solution :

Une méthode consiste à créer une fonction personnalisée qui divise la chaîne en points et récupère de manière itérative la propriété souhaitée. Un exemple simple est :

function getDescendantProp(obj, desc) {
    var arr = desc.split(".");
    while (arr.length && (obj = obj[arr.shift()]));
    return obj;
}

console.log(getDescendantProp(r, "b.b2")); // Outputs 99

Cette fonction descend de manière récursive la hiérarchie des objets en fonction du chemin séparé par des points, renvoyant la valeur finale. Notamment, il peut également gérer l'accès aux indices de tableau en utilisant la notation par points :

console.log(getDescendantProp({ a: [1, 2, 3] }, 'a.2')); // Outputs 3

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
Article précédent:Mot clé &#nouveau&#Article suivant:Mot clé &#nouveau&#