簡體   English   中英

以數組為參數執行函數

[英]Execute function with array as parameters

我有一個帶有隨機元素計數的數組,例如:

var array = [1, 2];

我想用以下參數執行一些功能:

functionName(SOME_CONST, array[0], array[1])

考慮到該數組可以具有不同數量的參數,什么是最好的方法?

請訪問https://developer.mozilla.org/zh-CN/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,其中a為'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.
  }
}

使用.apply和array join,我的意思是創建新數組,讓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對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM