2017-08-14 1 views
2

私はこの(ただし、複数のパラメータを有する)のようなものである機能を有する:配列の要素を個々の引数として関数に渡すにはどうすればよいですか?

function do_something(n1, n2, n3){ 
    return((n1-n2)*n3); 
} 

をそして、私は3つの項目を含む配列を有し、その関数のパラメータである:

my_array = [10,123,14]; 

たとえば、次のよう

do_something(my_array[0], my_array[1], my_array[2]); 

は、おそらくJavaScriptのための有効なコードではありませんが、私はこのような何かをしたい、

do_something(for(var i = 0; i < my_array.length; i++){ 
        add_parameter(my_array[i]); 
       }); 

したがって、配列の要素を関数のパラメータにする効率的な方法はありますか?

+0

これは、[ES6スプレッド演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)の目的です。 –

+0

@SpencerWieczorek私はそれが賢明だと知っていますが、演算子ではなく構文*です。https://stackoverflow.com/a/44934830/5647260 – Li357

+0

@AndrewLi MDNに伝えてください、私はちょうどURLに基​​づいてテキストを守っています。 –

答えて

5

使用spread syntaxはES2015で導入:

do_something(...my_array); 

これはdo_somethingに個別の引数としてmy_array要素を分散します。 my_array10, 123, 14が含まれている場合は、do_something(10, 123, 14)を呼び出すのと同等です。もちろん

あなたはES5バージョンのインターネット発破のためのサポートをしたい場合、あなたはまだFunction#applyを使用することができます。

do_something.apply(null /* the this value */, my_array); 

apply本質的に同じことを行います。引数の配列をとり、それらの引数を関数の個々の引数として(そしてthisの値)与えられた関数を実行します。

4

使用Function.Prototype.apply

do_something.apply(null, myArray);

または他の回答で述べたようにES2015/ES6の利用の広がりを使用して

do_something(...myArray)

関連する問題