2017-08-14 130 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); 

這將傳播my_array作爲單獨的參數的元素do_something。如果my_array包含10, 123, 14它將相當於調用do_something(10, 123, 14)

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

apply本質上是做同樣的事情:

當然,你仍然可以,如果你想爲互聯網發爆器的ES5版本支持使用Function#apply。它接受一組參數並使用這些參數作爲函數的單個參數(和this值)來執行給定函數。

4

使用Function.Prototype.apply

do_something.apply(null, myArray);

或使用ES2015/ES6使用廣泛傳播,對方的回答中提到

do_something(...myArray);

相關問題