反转数组 - 理解解决方案

时间:2017-02-27 15:55:08

标签: javascript arrays

我一直在通过Eloquent JS工作,并且无法弄清楚"倒转阵列"问题。

问题有一些参数,例如无法使用arr.reverse。无论如何,扭转相同阵列的解决方案,让我措手不及,我正在寻找帮助分解它的人。

function reverseArrayInPlace(arr) {
  var length = (Math.floor(arr.length))/2;

  for (var i = 0; i < length; i++) {
    var old = arr[i];
    arr[i] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = old;
 }
  return arr;
}

我觉得这就是故障:

function reverseArrayInPlace(arr) {
  var length = (Math.floor(arr.length))/2;

  for (var i = 0; i < length; i++) {
    var old = arr[i];                  // var old now equals 1
    arr[i] = arr[arr.length - 1 - i]; //  5 - 1 - 0 = 4. Arr[i] = 4
    arr[arr.length - 1 - i] = old;   // 4th position of arr = 1
                                    // new arr is 4,2,3,1,5 ?
 }
  return arr; 
}


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

解决方案有效,显然我的逻辑是关闭的。我哪里错了?

1 个答案:

答案 0 :(得分:0)

Pointy在评论中指出:

  

数组索引从零开始,因此arr[4]5,而不是4