Javascript 使用push和shift方法反转阵列
我正试图用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.│ └──
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它只是在一个代码块中。但是手动编写的?或者某种编辑器?是的,有在线和离线的工具可以为你做这件事,但是对于像这样小的东西,手工做会更快。