将数组传递给Javascript函数时只传递第一个元素

将数组传递给Javascript函数时只传递第一个元素,javascript,arrays,function,parameters,Javascript,Arrays,Function,Parameters,我使用以下代码将数组传递给变量javascript函数 function parse(fn, args) { var parameters = []; if (args) { for (var i = 0; i < args.length; i++) { parameters.push(args[i]); } } fn = (typeof fn =

我使用以下代码将数组传递给变量javascript函数

function parse(fn, args)
{
     var parameters = [];

     if (args)
     {
          for (var i = 0; i < args.length; i++)
          {
               parameters.push(args[i]);
          }
     }

     fn = (typeof fn == "function") ? fn : window[fn];
     return fn.apply(this, parameters);
}

function SomeFunction(parameters)                                                                    
{
     console.log(parameters);                                                                        
}
函数解析(fn,args)
{
var参数=[];
如果(args)
{
对于(变量i=0;i
这在某种程度上是有效的,因为调用了正确的函数并将参数传递给它。但是,我只接收函数中数组的第一个元素,这显然是我遇到的问题,因为我需要数组的所有元素,而不仅仅是第一个元素。

使用
(rest运算符)对于
解析
参数,将简化并正确传递数组

函数解析(fn,…参数){
fn=typeof fn==“函数”?fn:window[fn];
返回fn.apply(此参数);
}
函数(参数){
console.log(参数);
}

解析(SomeFunction[1,2])请求添加一个示例用法
函数SomeFunction(…参数)
可以工作,但您正在反向操作。当您希望第一个参数是数组时,为什么要应用
?当您期望一个参数是数组时,为什么不调用(this,parameters)
?另外,for循环对于
let parameters=Array.from(args)来说相当冗长
someFunction
只有一个参数。使用
apply()
时,每个数组元素都成为一个单独的参数。因此,第一个数组元素填充单个
参数
变量。无需
for
循环将
参数
复制到
参数
。您只需执行
var parameters=args | |[]我仍然在学习javascript,多年来一直是后端架构师,所以我是通过帖子和其他人的例子来完成这项工作的。。更改解析函数似乎奏效了。谢谢