Maison  >  Article  >  interface Web  >  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
DDDoriginal
2024-11-20 15:35:16588parcourir

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 } };

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

r.b.b2

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";

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:

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!

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