Considérez ce javascript:Javascript Regex pour convertir la notation de points à la notation de support
var values = {
name: "Joe Smith",
location: {
city: "Los Angeles",
state: "California"
}
}
var string = "{name} is currently in {location.city}, {location.state}";
var out = string.replace(/{([\w\.]+)}/g, function(wholematch,firstmatch) {
return typeof values[firstmatch] !== 'undefined' ?
values[firstmatch] : wholematch;
});
Cette volonté génèrerait les éléments suivants:
Joe Smith is currently in {location.city}, {location.state}
Mais je veux génèrerait les éléments suivants:
Joe Smith is currently in Los Angeles, California
Je cherche un bon moyen de convertir plusieurs niveaux de notation par points trouvés entre accolades dans la chaîne en plusieurs les paramètres à utiliser avec la notation de support, comme ceci:
values[first][second][third][etc]
Essentiellement, pour cet exemple, je suis en train de comprendre quelle chaîne regex et la fonction que je devrais finir avec l'équivalent de:
out = values[name] + " is currently in " + values["location"]["city"] +
values["location"]["state"];
REMARQUE: Je voudrais faire cela sans utiliser eval()
.
juste trouvé une faute. Renommé 'var joe' en' var values' – Tauren
Une autre question similaire a une solution alternative par @ J-P aux réponses ici. Il semble assez élégant: http://stackoverflow.com/questions/3344392/dynamic-deep-selection-for-a-javascript-object/3344487#3344487 – Tauren