Тема: JS: создание строки по шаблону из массива значений / объекта
Простой способ выводить данные в консоль или заполнять шаблоны без конкатенации.
В самом начале скрипта (или в своей билиотеке) добавить метод в прототип
if(!String.prototype.template){
String.prototype.template = function(jsonOrArr) {
var json = jsonOrArr ? jsonOrArr : {},
all = Array.prototype.slice.call(arguments);
if(all.length > 1){
json = all;
} else {
if(Object.prototype.toString.call(json) !== '[object Array]' && Object.prototype.toString.call(json) !== '[object Object]'){
json = [jsonOrArr];
};
};
if(!this.indexOf("${")) {
return this;
};
return this.replace(/\$\{\s*([$#@\-\d\w]+)\s*\}/gim, function (fullMath, grp) {
var val = json[grp];
if (typeof val === "function") {
val = val();
} else if (val === null || val === undefined) {
val = "";
} else if (typeof val === "object") {
val = val.toString();
} else {
val = val.valueOf();
}
return val;
});
};
};
После чего строки можно заполнять по шаблону (очень удобно для вывода в консоль, например)
var name="paramName";
var val = "paramVal";
var obj = {n: name, v:val};
/* по порядковому индексу */
WScript.Echo("проверка параметра ${0} на соответствие ${1}".template(name, val));
/* по имени свойства */
WScript.Echo("проверка параметра ${n} на соответствие ${v}".template(obj));
В обоих случаях в консоль выведется
проверка параметра paramName на соответствие paramVal