反转数组 - 雄辩的JavaScript第4章



我正在尝试解决这个问题,但我很难理解为什么函数 reverseArrayInPlace 没有做我想要它做的事情。 控制台.log函数中的将返回一个反向数组,但是当我返回相同的东西时,我没有得到反向数组。

我是初学者,所以请把答案弄得很笨。 谢谢

function reverseArray(array){
  var x = [];
    for (i=array.length - 1; i>=0; i--){
    x.push(array[i]);
  }
  return x;
}
function reverseArrayInPlace(array){
  console.log(reverseArray(array));
  return reverseArray(array);
}
    
//console.log(reverseArray(["A", "B", "C"]));
// → ["C", "B", "A"];
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
// → [5, 4, 3, 2, 1]

编辑:感谢您的回复。 我可以得到一些关于这个函数的反馈吗:

 function reverseArrayInPlace(array){
  for (i=1; i<array.length; i++){
    var x = array[i];
    array.splice(i,1);
    array.unshift(x);
  }
  return array;
}

它似乎对我有用。 你能看出它有什么问题吗?

您没有就地反转数组

在函数中,您将创建一个新数组,然后以相反的顺序添加元素

在函数的第一行中创建一个新变量

var x = [];

除非您想更改实现以在 reverseArray 中处理这两种情况,否则您需要在 reverseArrayInPlace 函数中实现不同的解决方案

您将需要

  1. 确定要从前面换用的元件
  2. 确定要从后面交换的元件
  3. 知道何时到达阵列中间并停止

如果需要,您可以选择返回数组,但由于更改是就地进行的,因此

不需要

reverseArrayInPlace() 函数实际上并没有正常工作。它正在调用reverseArray(),后者正在创建一个新数组来存储元素。因此,它需要返回此值。

为什么不干脆...

var arrayValue = [1, 2, 3, 4, 5];
arrayValue = arrayValue.reverse();
console.log(arrayValue);

编辑:NVM 我看到你正在通过教程工作。 IMO 这是最优雅的方式。

最新更新