Maison > interface Web > js tutoriel > Comment accéder aux propriétés d'un objet JavaScript imbriqué à l'aide d'une chaîne ?

Comment accéder aux propriétés d'un objet JavaScript imbriqué à l'aide d'une chaîne ?

DDD
Libérer: 2024-11-20 15:35:16
original
648 Les gens l'ont consulté

How to Access Nested JavaScript Object Properties Using a String?

Accès aux propriétés enfants des objets avec une chaîne de notation par points

L'accès aux propriétés enfants des objets JavaScript à l'aide de la notation par points en chaîne est une tâche de programmation courante. Cependant, il existe des limites lors de l'utilisation de cette approche pour l'accès dynamique aux propriétés.

Considérez l'objet suivant :

var r = { a: 1, b: { b1: 11, b2: 99 } };
Copier après la connexion

Pour accéder à la valeur de b2, on peut utiliser la notation par points standard :

r.b.b2
Copier après la connexion

Cependant, si l'on nécessite un accès dynamique aux propriétés basé sur une chaîne, tel que :

var s = "b.b2";
Copier après la connexion

Les tentatives directes comme r.s ou r[s] échouerait. Une solution consiste à utiliser une fonction personnalisée qui parcourt les segments de chaîne pour récupérer la propriété :

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

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

This function effectively simulates the behavior of dot notation by breaking down the string and recursively accessing the corresponding properties. However, it is important to note that this method works best for simple object property scenarios. Arrays can also be accessed using this approach by treating elements as dotted properties:
Copier après la connexion

getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2'); // 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!

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