我有一个元素的随机数的数组,例如:与阵列执行的功能参数
var array = [1, 2];
而且我想下一个参数来执行一些功能:
functionName(SOME_CONST, array[0], array[1])
是什么要做到这一点的最佳方式,考虑到该阵列可能有不同数量的参数?
我有一个元素的随机数的数组,例如:与阵列执行的功能参数
var array = [1, 2];
而且我想下一个参数来执行一些功能:
functionName(SOME_CONST, array[0], array[1])
是什么要做到这一点的最佳方式,考虑到该阵列可能有不同数量的参数?
看一看https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply关于如何使用方法Function.prototype.apply的细节。
只要你想使用的所有项目的数组中要调用函数的参数中,你可以使用:
function some_method(a, b, c) {}
var array = [1,2];
some_method.apply(this, ['SOME_CONST'].concat(array));
,这将导致调用some_method有作为“ SOME_CONST',b和c是数组中的前两个元素。如果数组中有更多的元素,它们会在some_method函数的参数列表中出现。
您可以直接调用该函数并传递数组本身,而不是它的内容是这样
function functionName(SOME_CONST, myArray){
//myArray contains the same elemnts here too
}
,然后你可以调用函数这样
var myArray = [1,2];
functionName(CONST_VAL,myArray);
最简单的解决办法是将将整个数组传递给函数并让函数遍历它。这将允许一个可变长度的数组。
functionName(SOME_CONST, array) {
for (var ii = 0, len = array.length; ii < len; ii++) {
// do something.
}
}
如果你想要一个可变参数函数,你应该使用['arguments'](https://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope/arguments),而不是强迫每个人都使用数组。 –
使用.apply
,和数组连接,我的意思是创建新的数组,让SOME_CONST
成为第一个元素,并加入你已经拥有的另一个数组。
你可以这样做,
var array = [1, 2];
functionName.apply(thisObj || window, [SOME_CONST].join(array));
function functionName(a, b, c){
//a is SOME_CONST, b is 1 and c is 2
}
thisObj
是你被调用函数的范围/上下文。如果你没有thisObj
只是通过window
对象
难道你不知道你需要传递给函数的参数吗?你不能通过整个阵列吗?恐怕这个问题还不够清楚。 – gdoron
@gdoron我必须将所有参数从数组传递到函数。作为多个参数传递,不仅仅是数组 –
@ Vitaliy Petrychuk。看看我的答案。它完全符合您的要求。 – 2012-05-17 15:22:13