-1

複数の引数を受け入れることができる API メソッドがありますが、それらの引数は配列でなければなりません。私がしたくないのは、配列ごとに各 api.someMethod() を呼び出すことです.1回の呼び出しでそれらをまとめようとしています。

例えば:

function getArrays() {
    var arr1 = ['1','2','3'];
    var arr2 = ['4','5','6'];
    var arr3 = ['7','8'];

    return [ arr1, arr2, arr3 ]
}

わかりにくかったことをお詫び申し上げます。私は電話しています:

api.someMethod( getArrays() )

何が起こるかというと、'someMethod' がカンマ区切りの配列のリストを期待しているため、私の戻り値が配列を配列にラップすることです。これは受け入れられません。

api.someMethod( arr1, arr2, arr3 );
4

2 に答える 2

1

applyの代わりに使用しcallます。次に、各引数を個別の引数にする代わりに、引数の配列を渡すことができます。

api.apply(context, [[arr1], [arr2], [arr3]]);

更新された質問に応じて編集します。

これは取るべきアプローチです:

コンテキストとして使用apiします (メソッドを直接呼び出した場合)。

api.someMethod.apply( api, getArrays() );
于 2013-03-11T14:00:45.887 に答える
0

私がやりたくないのは、すべての配列に対して各 api.call を呼び出すことです.1回の呼び出しでそれらをまとめようとしています。

可変量の引数を持つ関数は、次の方法で処理できます。

function variableArgs(){
  console.log(arguments.length);
  for(var i =0;i<arguments.length;i++){
    console.log(arguments[i]);
  }
}
variableArgs("hello")
variableArgs("hello","there","how","are","you");

単一の配列を返すことについては(それが必要な場合)、次のことができます。

function variableArgs(){
  var ret=[];
  for(var i =0;i<arguments.length;i++){
    console.log("ret is:",ret);
    //processing
    ret=ret.concat(arguments[i]);
  }
  return ret;
}
console.log("result of variableArgs is:",variableArgs([1,2],[3,4],[5,6]))
于 2013-03-11T14:03:42.133 に答える