0

これは重複しているかもしれませんが、正しい答えを見つけるのにほとんど成功しませんでした。私はこのようなことを達成しようとしています:

var joinArrays = function(myCollectionOfArguments) {
    return array.concat(array1, array2, ..... , arrayN);
};

その場合myCollectionOfArgumentsはになりますarray1, array2, ..... , arrayN。どうすればそのようなことを達成できますか?コールバック関数があれば、使用したい数の引数をコールドパスすることは知っています.apply()が、この特定のケースでは、アプローチに少し混乱しています。

編集:より説明的に:関数の引数を定義するときに、引数を1つだけ渡す代わりに、指定しなくても必要な数だけ渡すことができます。私の場合myCollectionOfArguments、引数は1つだけです。関数を定義しますが、関数を使用したい場合は、複数の引数を渡せるようにしたいです。

4

4 に答える 4

4

argumentsオブジェクトを任意の量の引数に使用でき、それを直接.apply:に渡すこともできます。

var joinArrays = function() {
    return [].concat.apply([], arguments);
};

ところで、bindここでの使用はよりエレガントになります:

var joinArrays = Array.prototype.concat.bind([]);
于 2012-12-17T17:59:23.080 に答える
2

私があなたの意図を正しく理解したら、試してみてください:

var joinArrays = function(a) {
  return a.concat.apply(a, Array.prototype.slice.call(arguments, 1));
};

var foo = joinArrays([1, 2], [3, 4], [5, 6]);

console.log(foo); // => [1, 2, 3, 4, 5, 6] 
于 2012-12-17T17:57:40.727 に答える
0
function testFunction()
{
    var arg1 = arguments[0];
    var arg2 = arguments[1];
    var arg3 = arguments[2];
}
于 2012-12-17T17:53:36.207 に答える
0

わかりませんが、任意の数の配列を渡すことができます。

joinArrays([1,2,3], [4,5,6], [7,8], [9,10,11,12])

argumentsその後、内の特別な変数を使用してそれらすべてを読み取りますjoinArrays()

于 2012-12-17T17:53:52.047 に答える