Javascript 将数组作为参数传递给函数
我有以下功能:Javascript 将数组作为参数传递给函数,javascript,arrays,function,Javascript,Arrays,Function,我有以下功能: String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; 现在假设我定义了以下代码: var dataItem =
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined' ? args[number] : match;
});
};
现在假设我定义了以下代码:
var dataItem = { membershipId: 1, userId: 3 };
var dataKeyNames = 'membershipId,userId';
var url = '/Admin/User?MembershipId={0}&UserId={1}';
我想做的是调用format函数,传递数据项中的每个值(对于每个数据键名称)。例如,如果只有一个数据键名称,那么我可以说:
var formattedUrl = url.format(dataItem[dataKeyNames]);
但我需要能够对dataKeyNames进行拆分,并将数据项中的每个对应值作为format函数中的参数传入
如果有人能告诉我这是怎么做的,我将不胜感激。谢谢让我们一步一步走下去 首先,可以使用
dataKeyNames.split(“,”)
将键字符串拆分为一个数组
然后,您可以在字符串数组上调用map
,以生成一个新数组,具体来说,就是要传递给format
方法的值。这是您与dataItem
变量交互的地方
最后,您可以使用url.format.apply
实际调用format
方法和新数组。请注意,最重要的可能是将url
作为apply
的第一个参数传递,该参数设置格式
将使用的此
值
下面是我想到的代码:
var formattedUrl = url.format.apply(url, dataKeyNames.split(",").map(function (val, index, array) {
return dataItem[val];
}));
演示:
为了使它更具可读性,您可以将其拆分为几行
参考文献:
-String.prototype.split
-Array.prototype.map
浏览器支持-Array.prototype.map
-函数.原型.应用
dataKeyNames.split(“,”)
?然后在数组上循环调用.format()
,使用键的值?@RocketHazmat我猜他们希望它在“一”行中。我猜在拆分字符串上使用.map()
,并从对象中获取相应的值,将为它们提供所需的数组。将应用于函数call@Ian:啊!对我误解了。谢谢你的快速回复。这很有效,几乎不是任何代码。@n请不要出问题!只需远离对地图的浏览器支持即可:-但是MDN页面在少数不支持它的浏览器中提供了一个polyfill