我有一個元素的隨機數的數組,例如:與陣列執行的功能參數
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