Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带数组的JavaScript字符串格式_Javascript_Arrays_Node.js_String Formatting - Fatal编程技术网

带数组的JavaScript字符串格式

带数组的JavaScript字符串格式,javascript,arrays,node.js,string-formatting,Javascript,Arrays,Node.js,String Formatting,我正在使用库格式化node.js中的字符串 var stringFormat = require('stringformat'); stringFormat.extendString(); 我尝试传递一个参数数组,而不是内联传递,如下所示: var formatted = '{0}{1}'.format(params); String.prototype.myFormatString = function(_array){ var s = _array[0]; for (va

我正在使用库格式化node.js中的字符串

var stringFormat = require('stringformat');
stringFormat.extendString();
我尝试传递一个参数数组,而不是内联传递,如下所示:

var formatted = '{0}{1}'.format(params);
String.prototype.myFormatString = function(_array){
    var s = _array[0];
    for (var i = 0; i < _array.length - 1; i++) {       
         var reg = new RegExp("\\{" + i + "\\}", "gm");             
         s = s.replace(reg, _array[i + 1]);
    }
    return s;
}
而不是:

var formatted = '{0}{1}'.format(params[0], params[1]);
但是图书馆不支持这个

我一直在问这个问题: 并尝试了以下方法:

params.unshift('{0}{1}');
String.prototype.format.apply(String.prototype, params);
而且:

var i = -1;
'{0}{1}...'.format(function() {
    i++;
    return params[0];
});
而且没有一个像预期的那样工作


有什么想法吗?

您可以编写自己的格式扩展,如下所示:

var formatted = '{0}{1}'.format(params);
String.prototype.myFormatString = function(_array){
    var s = _array[0];
    for (var i = 0; i < _array.length - 1; i++) {       
         var reg = new RegExp("\\{" + i + "\\}", "gm");             
         s = s.replace(reg, _array[i + 1]);
    }
    return s;
}

希望这能有所帮助。

或者如果您不想使用我在评论中提到的扩展运算符,您也可以在ES5中执行类似操作

function formatWithArray(str,arr){
var a = arr[0],
    b = arr[1],
    c = arr[2],
    d = arr[3];
return str.format(a,b,c,d);
}
var formatted = formatWithArray('{0}{1}',params);

虽然在您的特定情况下,最后两个(c和d)将是未定义的,但最多可以使用4个参数。我希望stringFormat库不会为多余的参数而烦恼。

可能您可以尝试
var-formatted='{0}{1}'。format(…params)什么是
?这是ES6功能扩展运算符。它非常适合这种情况。
s.replace(reg,arguments[i+1])应该是
s.replace(reg,数组[i+1])