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

时间:2017-08-14 01:54:13

标签: javascript

我有一个像这样的函数(但有更多参数):

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]);
              });

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

2 个答案:

答案 0 :(得分:5)

使用ES2015中引入的spread syntax

my_array

这将传播 do_something的元素作为my_array的个别参数。如果10, 123, 14包含do_something(10, 123, 14),则相当于调用do_something.apply(null /* the this value */, my_array);

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

apply

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

答案 1 :(得分:4)

使用Function.Prototype.apply

let orm = { selectAll: (tableName, callback)=>{ let queryString = "SELECT * FROM ??" connection.query(queryString, tableName, (err, data)=>{ if (err){console.error("ERROR: " + err.stack)} callback(data) }) } }

或使用ES2015 / ES6使用其他答案中提到的点差

do_something.apply(null, myArray);;