Еще раз всем привет!
Есть три templater’a:
function templater1(string, data) {
var subStringToReplace;
var dataToReplace;
for (var key in data) {
subStringToReplace = '${' + key + '}';
dataToReplace = data[key];
while (string.indexOf(subStringToReplace) !== -1) {
string = string.replace(subStringToReplace, dataToReplace);
}
}
return string;
}
function templater2(string, data) {
string = string.replace(/\$\{{1}([a-z ]+)\}/gmi, function (matched, matchedParrent) {
if (data[matchedParrent]) {
return data[matchedParrent];
} else {
return matched;
}
});
return string;
}
function templater3(string, data) {
for (var i in data) {
var tempData = '${' + i + '}';
if (string.indexOf(tempData) !== -1) {
while (string.indexOf(tempData) !== -1) {
string = string.replace(tempData, data[i]);
}
}
}
return string;
}
Все они делают одно и тоже.
Тест тут http://jsfiddle.net/aH6y/jgay23j5/
2 вариант самый быстрый, практически мгновенно делает свое дело(около 100-150 мс).
1 и 3 у меня отрабатывали за ~33 с
Возможно есть более быстрый вариант? Или templater2
наше все?
Спасибо ;)