Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 数组反转函数JS_Javascript_Arrays_Function - Fatal编程技术网

Javascript 数组反转函数JS

Javascript 数组反转函数JS,javascript,arrays,function,Javascript,Arrays,Function,一个初学者的问题。。我需要写一个函数来反转作为函数输入的数组。(我不能使用反向方法) 我想知道为什么会这样: 函数反转arrayinplace(数组){ for(设i=0;i

一个初学者的问题。。我需要写一个函数来反转作为函数输入的数组。(我不能使用反向方法)

我想知道为什么会这样:

函数反转arrayinplace(数组){
for(设i=0;iconsole.log(reversearlayinplace(arr))
因为数组是通过复制引用传递给函数的,所以不能从函数内部更改外部引用。

因为数组是通过复制引用传递给函数的,所以不能从函数内部更改外部引用

   arr = arr.slice(0, len);
slice
返回存储在局部变量
arr
中的新数组,该数组不会更改
b
,它仍然指向整个数组。要改变数组,可以:

 arr.splice(len, len);
然后,您必须
返回arr
以记录有意义的内容

slice
返回存储在局部变量
arr
中的新数组,该数组不会更改
b
,它仍然指向整个数组。要改变数组,可以:

 arr.splice(len, len);

然后必须
返回arr
以记录有意义的内容。

如果要更改输入arr,避免返回,请使用
拼接

功能反转arrayinplace(arr){
设len=arr.长度;
用于(计数器=0;计数器<2*len;计数器+=2){
arr.unshift(arr[计数器]);
}
arr.拼接(len);
}
VarB=[0,1,2,3,4,5];
反向放置(b);

控制台日志(b)如果要更改输入阵列,避免返回,请使用
拼接

功能反转arrayinplace(arr){
设len=arr.长度;
用于(计数器=0;计数器<2*len;计数器+=2){
arr.unshift(arr[计数器]);
}
arr.拼接(len);
}
VarB=[0,1,2,3,4,5];
反向放置(b);


控制台日志(b)设置断点并查看数组中的值发生了什么情况。console.log()和断点是您的朋友。您没有从函数返回任何内容。如果您在最后
返回arr
,您将看到它是有效的。可能重复@leviderkowitz没有“正确的方法”。“right way”是什么意思?设置一个断点并查看数组中的值发生了什么。console.log()和断点是您的朋友。您不会从函数返回任何内容。如果您在最后
返回arr
,您将看到它是有效的。可能重复@leviderkowitz没有“正确的方法”。“正确的方式”是什么意思?@Qurimmo nope,变量是按值传递的。数组是按值传递的对象……其中值是它们的引用。因此,对
arr
进行就地修改也会在函数外部对其进行更改,但是
arr=/*某些东西*/
不会影响函数外部的数组。是的,这就是我的意思,很抱歉读错了。如果他想更改输入arr,避免返回,使用splice,他可以直接修改它,当然,如果他想执行
console.log(reversearlayinplace(b))
方法必须返回它,否则打印的值将始终是未定义的,因为函数不返回anything@quirimmo不,变量是按值传递的。数组是按值传递的对象…其中值是它们的引用。因此,对
arr
进行就地修改也会在函数外部对其进行更改,但是
arr=/*某些东西*/
不会影响函数外部的数组。是的,这就是我的意思,很抱歉读错了。如果他想更改输入arr,避免返回,使用splice,他可以直接修改它,当然,如果他想执行
console.log(reversearlayinplace(b))
该方法必须返回它,否则打印的值将始终是
未定义的
,因为该函数不会返回任何内容。该函数在
arr
被删除时意外工作。删除
arr=
,它仍然可以工作。这是在
arr
被删除时意外发生的。删除
arr=
,它仍然可以工作。不知道为什么会被否决。这是准确的,并解释了原因。不知道为什么会被否决。这是准确的,并解释了原因。