Javascript 使用数组填写格式字符串

Javascript 使用数组填写格式字符串,javascript,string,format,Javascript,String,Format,我试图获取一个数组,并在格式字符串中使用它的值 var arry = ["1", "2", "3"]; alert("Numbers {0} equal {2} - {1}.".format(arry)); 问题是这使得数字1,2,3等于{2}-{1}。而不是数字1等于3-2的期望结果。。有没有一种方法可以在不进行某种for循环的情况下得到这个结果 function arrayFormat(str, arr) { return str.replace(/{(\d+)}/g, funct

我试图获取一个数组,并在格式字符串中使用它的值

var arry = ["1", "2", "3"];
alert("Numbers {0} equal {2} - {1}.".format(arry));
问题是这使得数字1,2,3等于{2}-{1}。而不是数字1等于3-2的期望结果。。有没有一种方法可以在不进行某种for循环的情况下得到这个结果

function arrayFormat(str, arr) {
    return str.replace(/{(\d+)}/g, function(match, m1) {
        return (m1 in arr) ? arr[m1] : match;
    });
}
它使用,第二个参数作为函数。它使用括号中数字的每个匹配项作为键,并用对应于该键的数组中的值替换该匹配项

您可以尝试以下方法:

String.format = function() {
  var s = arguments[0];
  for (var i = 0; i < arguments[1].length; i++) {       
      var reg = new RegExp("\\{" + i + "\\}", "gm");             
      s = s.replace(reg, arguments[1][i]);
  }
  return s;
}
var arry = ["1", "2", "3"];

console.log(String.format("Number {0} equal {2} - {1}.",arry)); //Numbers 1 equal 3 - 2.
console.log(String.format("Number {0} equal {2} - {1}.",'1')); //Numbers 1 equal {2} - {1}.
console.log(String.format("Number {0} equal {2} - {1}.",'12')); //Numbers 1 equal {2} - 2.
console.log(String.format("Number {0} equal {2} - {1}.",'123')); //Numbers 1 equal 3 - 2.

函数String.format看起来像?.format是python的东西。