Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript将参数分解为函数调用_Javascript_Arrays - Fatal编程技术网

使用javascript将参数分解为函数调用

使用javascript将参数分解为函数调用,javascript,arrays,Javascript,Arrays,我有一个函数,它接受可变数量的参数,这些参数在一个数组中。该函数不将数组作为参数。我要做的是将数组分解为函数调用的参数。我不确定阵列的长度,但我知道它将超过3 var array = ['a', 'b', 'c', 'd', ...etc] doit(arr[0], arr[1], arr[2], ...etc) function doit( a, b, ...c){ //do stuff } 听起来您应该将array扩展到doit的调用中: doit(...array); 请注意,这

我有一个函数,它接受可变数量的参数,这些参数在一个数组中。该函数不将数组作为参数。我要做的是将数组分解为函数调用的参数。我不确定阵列的长度,但我知道它将超过3

var array = ['a', 'b', 'c', 'd', ...etc]
doit(arr[0], arr[1], arr[2], ...etc)

function doit( a, b, ...c){
  //do stuff
}

听起来您应该将
array
扩展到
doit
的调用中:

doit(...array);
请注意,这称为扩展(或“扩展语法”),它不是解构。分解涉及创建新变量或分配给现有变量

较旧的方法是使用
apply

doit.apply(undefined, array);

一种方法是在任何javascript函数中使用特殊变量
arguments
。您将获得对所有参数的访问权,无论其数量如何

var arr1=['a','b','c','d','e','f'];
var arr2=['A','B','C'];
doit(arr1);//一个论点:[a,b,c,d,e,f]
doit(arr2);//一个论点:[A,B,C]
doit(arr1[0],arr2[1],'anything',-3.1);//四个参数:a,B,‘任何东西’,-3.1
函数doit(){

对于(var i=0;i@CapitalJusticeWarrior-使用您现有的声明(
函数doit(a,b,…c)
),这是有效的,即使您可能只是将其作为缩写,如果您执行上述操作,您将得到第一个数组元素作为
a
,第二个作为
b
,其余元素作为
c
中的数组(对于
c
的声明称为rest参数)。谢谢!我只考虑使用数组括号内的排列。@CapitalJusticeWarrior注意,兼容性虽然很高,但并不统一,也请参见和。(如果扩展已经在你的进程中工作了,可能不是一个问题,但是如果你还没有,如果你想支持古浏览器,你可以考虑Babel是安全的)问题是如何分解结构,而不是如何通过索引运算符进行访问,因为索引运算符对长度未知的数组无效。问题也不是如何处理函数中数量未知的参数。“函数不将数组作为参数。”这是出于设计,还是您愿意接受数组参数?参数变量需要不同的名称(a、b、c等)还是数组?您有什么可用的JavaScript版本?