Maison >interface Web >js tutoriel >Comment puis-je convertir une chaîne de notation par points JavaScript en une référence d'objet ?
É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.
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 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]];
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.
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!