将数组元素传递给bob.js formatString函数

时间:2016-04-15 05:05:15

标签: javascript

我想将数组元素传递给bob bob.string.formatString格式字符串,以便我可以传递任意数量的参数,它会自动填充占位符中的必需参数。这是我尝试过的。

var string = "Hi {0} and {1}."; 
var x = "Hello";
var y = "world";
var result = test(string ,[x,y] )

function test(string ,args){
//return bob.string.formatString(string, args[0] , args[1]);  -> This gives me correct output
str = bob.string.formatString.apply(string , args);
console.log("final string:" + str); // --> This gives me only Hello

我希望“嗨你好,世界”作为输出。

1 个答案:

答案 0 :(得分:1)

apply的第一个参数是thisArg。它为该函数调用提供this的值。而不是:

str = bob.string.formatString.apply(string , args);

你应该用:

来打电话
str = bob.string.formatString.apply(null, [string].concat(args));
// or
str = bob.string.formatString.apply(bob.string, [string].concat(args));

您还可以将您的功能定义为:

function test(string) {
    var args = [].slice.call(arguments, 1);
    str = bob.string.formatString.apply(null, [string].concat(args));
    console.log("final string:" + str);
}

这也需要1到N个参数并将它们传递给formatString。在ES6中,您可以使用官方休息参数:

function test(string, ...args) {
    str = bob.string.formatString(string, ...args);
    console.log("final string:" + str);
}