1

Тема: 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