Рассмотрим этот JavaScript:
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;
});
Будет выведено следующее:
Joe Smith is currently in {location.city}, {location.state}
Но я хочу вывести следующее:
Joe Smith is currently in Los Angeles, California
Я ищу хороший способ преобразования нескольких уровней обозначений точек, найденных между фигурными скобками в строке, в несколько параметров, которые будут использоваться с обозначениями в скобках, например:
values[first][second][third][etc]
По сути, в этом примере я пытаюсь выяснить, какую строку и функцию регулярного выражения мне нужно будет получить в результате, эквивалентном:
out = values[name] + " is currently in " + values["location"]["city"] +
values["location"]["state"];
ПРИМЕЧАНИЕ: Я бы хотел сделать это без использования eval()
.