【发布时间】:2019-08-21 08:14:59
【问题描述】:
我有以下问题:
// 反转数组
编写一个函数,该函数接受一个数组并将该数组反转。该行为应模仿本机 .reverse() 数组方法的行为。但是,您的反向函数应该接受要操作的数组作为参数,而不是作为该数组上的方法调用。
不要在您自己的实现中使用本机 .reverse() 方法。
我尝试了以下代码:
let myArray = [1, 2, 3, 4];
function reverse(myArray) {
let newArray = [];
// pop all of elements from roginal array, and store in new array
for (i=myArray.length-1; i>=0; i--){
newArray.push(myArray[i])
console.log(newArray)
}
while (newArray.length){
myArray.unshift(newArray)
}
return myArray;
}
reverse(myArray);
console.log(myArray) // expected output is [4, 3, 2, 1]
我的代码一直在运行,并且没有产生任何 console.log 输出。请注意,我希望对输入数组参数执行相反的操作。
我做错了什么?另外,while (newArray.length) 是什么意思/它在概念上做什么?
【问题讨论】:
-
您遗漏了要求的一个重要部分:"...并在 就地" 反转该数组
-
而你编写代码“只是继续运行”的原因是你的无限循环——循环内
while (newArray.length)不会改变newArray的长度 -
要反转数组就地,您只需交换第一个和最后一个元素,然后是第二个和倒数第二个元素等,当你走到一半时停止.
-
我也建议交换。将第 i 个元素与 length-i 元素交换。
-
您选择的答案会导致您的作业失败。
标签: javascript arrays function arguments reverse