たとえば、要素の数がランダムな配列があります。
var array = [1, 2];
そして、次のパラメーターでいくつかの関数を実行したい:
functionName(SOME_CONST, array[0], array[1])
配列が異なる数のパラメータを持つ可能性があることを考えると、これを行う最善の方法は何ですか?
たとえば、要素の数がランダムな配列があります。
var array = [1, 2];
そして、次のパラメーターでいくつかの関数を実行したい:
functionName(SOME_CONST, array[0], array[1])
配列が異なる数のパラメータを持つ可能性があることを考えると、これを行う最善の方法は何ですか?
Function.prototype.apply メソッドの使用方法の詳細については、https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/applyを参照してください。
呼び出している関数の引数として配列内のすべての項目を使用したい限り、次を使用できます。
function some_method(a, b, c) {}
var array = [1,2];
some_method.apply(this, ['SOME_CONST'].concat(array));
これにより、a が「SOME_CONST」であり、b と c が配列の最初の 2 つの要素である some_method が呼び出されます。配列にさらに要素がある場合は、 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
、新しい配列を作成し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
オブジェクトがない場合