Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Function_Parsing_Element - Fatal编程技术网

在javascript中将数组设置为参数

在javascript中将数组设置为参数,javascript,arrays,function,parsing,element,Javascript,Arrays,Function,Parsing,Element,我试图从一个函数到另一个函数解析数组。 我在其他帖子中看到“.apply”可以在本例中使用: var x = [ 'p0', 'p1', 'p2' ]; call_me.apply(this, x); 但是在我的代码中,我想解析到其他函数,而不仅仅是一个数组,我想解析数组和两个字符串。因此mi代码看起来更像: var array = [1, 2, 3]; var string = "something": var string1 = "something": ShowM(array, str

我试图从一个函数到另一个函数解析数组。 我在其他帖子中看到“.apply”可以在本例中使用:

var x = [ 'p0', 'p1', 'p2' ]; 
call_me.apply(this, x);
但是在我的代码中,我想解析到其他函数,而不仅仅是一个数组,我想解析数组和两个字符串。因此mi代码看起来更像:

var array = [1, 2, 3];
var string = "something":
var string1 = "something":
ShowM(array, string, string2);

function ShowM(array, string1, string2) {
alert(array[1] + string1 + string2);
}

是否有任何方法可以在不改变数组元素的原始位置的情况下实现这一点,以避免未定义?。Thnks

如果问题纯粹是关于如何在Javascript中设置数组作为主题问题所述的参数,那么您只需要像其他变量一样

var array = [a,b,c];
var str = "hello";
var str2 = "something";

function foo(x,y,z) {
    // do stuff...
}

foo(array, str, str2); //executes function with the 3 parameters

如果只想将数组传递到函数中,可以像传递任何其他变量一样传递它:

function showM(a, b, c) {
    // empty function definition
}

var x = [ 'p0', 'p1', 'p2' ];
showM(x, "some string", "another string");
在javascript中,所有数组都是通过引用传递的,因此当您在函数中更改传递的数组的内容时,内容将在所有作用域中更改。duck类型表示可以使用任何变量类型作为参数

另一方面,
apply
函数调用具有给定内容和参数数组的函数(它会像ES6 spread操作符一样展开):


那么应用
有什么问题呢?你问的不是很清楚。
leftb
right
final
到底应该是什么?我不知道你在问什么?你能澄清一下吗?我刚刚编辑了我的博文,但通过这篇文章,我得到了数组元素的不同位置,并且通常打印“未定义”的内容。你能更具体地描述一下你实际要做的事情吗?我的意思是,给我一个有数据的例子,告诉我你想让数据变成什么。[编辑]我只想在函数中得到1,但它只是显示未定义。我尝试了两个1,每次函数都将元素数组[1]放入数组[3]。我不明白你想做什么,你需要准确地说明问题,包括所有相关代码。但是,您可能希望通过值而不是引用来传递数组。在这种情况下,可以使用
slice
函数传递数组的[shall]副本,如下所示:
showM(x.slice(),“a”,“b”)[编辑]我只想在函数中得到1,但它只是显示未定义。好的,我仍在努力理解,抱歉。但是您知道javascript(和大多数编程语言)中的数组是零索引的吗?换句话说,如果您想访问第一个值,您可以使用
x[0]
,而不是
x[1]
(更一般地说,
x[x.length]
在密集的数组中始终是未定义的,并且
x[x.length-1]
引用最后一个元素,假设数组不是空的,在这种情况下也将是未定义的)。
// equivalent to the other call, except "this" is bound to null
showM.apply(null, [x, "some string", "another string"]);