Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 使用push和shift方法反转阵列_Javascript_Arrays - Fatal编程技术网

Javascript 使用push和shift方法反转阵列

Javascript 使用push和shift方法反转阵列,javascript,arrays,Javascript,Arrays,我正试图用push和shift方法为反向数组编写一个函数,但它不起作用 function reverseArrayInPlace(array) { for (let i = 0; i < array.length - 1; i++) { array.push(array.shift); } return array; } 函数反转arrayinplace(数组){ for(设i=0;i │ 1.│ │ 2.│ 3.│ 4.│ 1.│ └──

我正试图用push和shift方法为反向数组编写一个函数,但它不起作用

function reverseArrayInPlace(array) {
    for (let i = 0; i < array.length - 1; i++) {
        array.push(array.shift);
    }
    return array;
}
函数反转arrayinplace(数组){
for(设i=0;i

我猜for循环会永远循环,因为我正在eloquentjavascript的网站上运行代码,运行代码时会收到以下消息:“此代码已经运行了2秒。中止它?”此代码有什么问题?

您实际上并没有调用该方法,只是将其作为引用传递

为了更清楚,请执行以下操作:

let temp_value = array.shift()
array.push(temp_value)

当前代码中有两个问题:一个是打字错误,另一个是算法问题

首先,您当前没有呼叫shift:

array.push(array.shift);
//缺失()-------^
第二个问题是,您提出的算法不会反转数组,而是会移动它。
请允许我演示:

给定一个初始数组
[1,2,3,4]
,下面是您的算法的作用

//初始状态
┌───┬───┬───┬───┐
│ 1.│ 2.│ 3.│ 4.│
└───┴───┴───┴───┘
//一班…/。。。推它
┌───┬───┬───┐    ┌───┐     ┌───┬───┬───┬───┐
│ 2.│ 3.│ 4.│ -> │ 1.│     │ 2.│ 3.│ 4.│ 1.│
└───┴───┴───┘    └───┘     └───┴───┴───┴───┘
//一班…/。。。推它
┌───┬───┬───┐    ┌───┐     ┌───┬───┬───┬───┐
│ 3.│ 4.│ 1.│ -> │ 2.│     │ 3.│ 4.│ 1.│ 2.│
└───┴───┴───┘    └───┘     └───┴───┴───┴───┘
//等
如您所见,您的算法不会反转数组,而是以相同的顺序从头到尾追加项目


您可以在中看到一些可选选项,从技术上讲,除了打字错误之外,这是一个重复的选项。

shift()
而不是
shift
。。。你必须调用这个方法仍然不起作用@charlietfl-
[1,2,3]
->
[3,1,2]
@JackBashford这里有两个问题隐藏在其中。第一个是印刷错误,第二个是错误的算法方法。修复一个不会自动修复另一个。@charlietfl谢谢。实际问题不是调用方法。这仍然是错误的,但在看到结果后,我理解了逻辑部分。当浏览器不使用什么工具创建图表时,逻辑排序会容易得多吗?@charlietfl它只是在一个代码块中。但是手动编写的?或者某种编辑器?是的,有在线和离线的工具可以为你做这件事,但是对于像这样小的东西,手工做会更快。