如何将数组的元素作为单个参数传递给函数?

Fah*_*Moz 2 javascript

我有一个这样的功能(但有更多的参数):

function do_something(n1, n2, n3){
    return((n1-n2)*n3);
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个包含3个项目的数组,并且是该函数的参数:

my_array = [10,123,14];
Run Code Online (Sandbox Code Playgroud)

例如,

 do_something(my_array[0], my_array[1], my_array[2]);
Run Code Online (Sandbox Code Playgroud)

以下可能不是JavaScript的有效代码,但我想要这样的东西,

 do_something(for(var i = 0; i < my_array.length; i++){
                  add_parameter(my_array[i]);
              });
Run Code Online (Sandbox Code Playgroud)

那么,是否有任何有效的方法使数组的元素成为函数的参数?

Li3*_*357 5

使用ES2015中引入的扩展语法:

do_something(...my_array);
Run Code Online (Sandbox Code Playgroud)

这会将各个参数的元素分散my_arraydo_something.如果my_array包含10, 123, 14它将等同于调用do_something(10, 123, 14).

当然,Function#apply如果您想要支持ES5版本的Internet Exploder ,您仍然可以使用:

do_something.apply(null /* the this value */, my_array);
Run Code Online (Sandbox Code Playgroud)

apply基本上做同样的事情.它接受一个参数数组并执行给定的函数,并将这些参数作为函数(和this值)的单独参数.