Maison >interface Web >js tutoriel >Comment puis-je convertir une chaîne de notation par points JavaScript en une référence d'objet ?

Comment puis-je convertir une chaîne de notation par points JavaScript en une référence d'objet ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 08:32:10729parcourir

How Can I Convert a JavaScript Dot Notation String into an Object Reference?

Conversion d'une chaîne JavaScript en notation par points en une référence d'objet

Comprendre le besoin

Étant donné une chaîne JavaScript qui représente un chemin de propriété dans un objet en utilisant la notation par points (par exemple, "a.b"), le but est de convertir cette chaîne en une référence réelle à la propriété souhaitée dans le object.

La méthode d'évaluation

Une méthode simple pour réaliser cette conversion consiste à utiliser la fonction eval(). Bien que l'utilisation de eval() soit généralement déconseillée pour des raisons de sécurité, elle est applicable dans ce scénario spécifique car la chaîne d'entrée est contrôlée et censée adhérer à une syntaxe spécifique. Le code utiliserait simplement eval("obj") pour obtenir la référence de propriété souhaitée.

Une conversion de chaîne en tableau en objet

Une alternative, moins concise mais potentiellement plus une approche efficace et robuste implique de convertir la chaîne de notation par points en un tableau de noms de clés (par exemple, ["a", "b"]) et d'utiliser ensuite ce tableau comme référence path :

const keyArray = dotNotationString.split('.');
const value = obj[keyArray[0]][keyArray[1]];

Implémentation de fonction récursive

Une troisième option consiste à créer une fonction récursive qui parcourt l'objet à l'aide de la chaîne d'entrée :

function getPropertyByDotNotation(obj, string) {
  if (!obj) {
    return undefined;
  }
  if (!string || string.length === 0) {
    return obj;
  }
  const [key, ...rest] = string.split('.');
  return getPropertyByDotNotation(obj[key], rest.join('.'));
}

Cette approche récursive offre de la flexibilité et gère des objets de profondeur arbitraire.

Conclusion

Le choix de la méthode dépend des exigences spécifiques et les considérations de performances. Lorsque vous travaillez avec une entrée fiable et un ciblage simple, eval() peut convenir. Pour les scénarios présentant des problèmes de performances ou une validation d'entrée plus complexe, les approches matricielles ou récursives offrent des alternatives fiables.

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