Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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/12.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,请复制此代码并运行测试; 您可以看到我的_数组是如何保持不变的 为什么这不起作用? 我不想推送值,我想要一个完整的数组更改 我觉得自己像个……你弄得一团糟,因为你在不同的作用域中使用了相同的变量名。请看几个问题: my_array=global_fun.slice;这仅更新my_函数中的my_数组 我的函数没有返回它,所以它永远丢失了 请参见此处的修改版本,我已更改了我的_函数,因此它将返回修改后的数组,并将返回值分配给测试函数范围中的我的_数组: var测试=功能{ var my_array

请复制此代码并运行测试; 您可以看到我的_数组是如何保持不变的

为什么这不起作用? 我不想推送值,我想要一个完整的数组更改


我觉得自己像个……你弄得一团糟,因为你在不同的作用域中使用了相同的变量名。请看几个问题:

my_array=global_fun.slice;这仅更新my_函数中的my_数组 我的函数没有返回它,所以它永远丢失了 请参见此处的修改版本,我已更改了我的_函数,因此它将返回修改后的数组,并将返回值分配给测试函数范围中的我的_数组:

var测试=功能{ var my_array=[1,2,3];//创建/声明的第一个 my_function=functionmy_数组{///作为参数创建的第二个数组 my_array=global_fun.slice;//修改了第二个,而不是第一个 console.logmy_array.length;//>>10!!!!!! 返回我的_数组;//返回第二个数组 } my_array=my_Function my_array;//第一个获取第二个的值 console.logmy_array.length;//>>不再是3!!!!!! document.body.innerHTML='结束数组:'+我的数组; } var全局函数{ var数组=[]; 数组=[9,8,7,6,5,4,3,2,1,0]; 返回数组; }
试验 其思想是期望值是通过引用传递的,而它是基于值的

检查这个问题

更新后必须按如下方式返回更新后的值:

var test = function () 
{   

   var my_array =[1,2,3];

   my_function = function  (my_array) 
   {
    my_array = global_fun().slice();
    console.log(my_array.length); // >> 10 !!!!!!
   }

   my_function (my_array);
   console.log(my_array.length); // >> 3 !!!!!!
   // my_array keeps being 1,2,3   

}

var global_fun = function ()
{    
var array =[];
array=[9,8,7,6,5,4,3,2,1,0];
return array;
}
my_function = function  (my_array) 
   {
    my_array = global_fun().slice();
    console.log(my_array.length); // >> 10 !!!!!!
    return my_array; 
   }
然后按如下方式调用它:

var test = function () 
{   

   var my_array =[1,2,3];

   my_function = function  (my_array) 
   {
    my_array = global_fun().slice();
    console.log(my_array.length); // >> 10 !!!!!!
   }

   my_function (my_array);
   console.log(my_array.length); // >> 3 !!!!!!
   // my_array keeps being 1,2,3   

}

var global_fun = function ()
{    
var array =[];
array=[9,8,7,6,5,4,3,2,1,0];
return array;
}
my_function = function  (my_array) 
   {
    my_array = global_fun().slice();
    console.log(my_array.length); // >> 10 !!!!!!
    return my_array; 
   }

将my_function=functionmy_array更改为my_function=functionmy_array\u 2my_array是my_函数的一个参数,因此是my_函数的局部参数。赋值不会改变test的my_数组变量…问题是我不想返回值。。。。嗯,我要写一个替换函数。。。Th。不管怎样,你可以随时修改数组的内容,但不能立即替换整个数组。是的,你写了什么,我在你10分钟前的回答中还没有写下来解释过的?@Shomz,谢谢你的澄清。事实上,我在你提交答案之前就开始写我的答案,在阅读你的答案之前就已经提交了。我不确定差距是10分钟。此外,我还发现询问者需要理解为什么他的方法不起作用,而不仅仅是完成任务。我的回答包括解释为什么它不起作用。虽然你的回答提供了一个有效的方法,但没有解释当前方法的错误