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

相关问题