我有一个称为reverseArray的Javascript函数,该函数将数组作为参数,并返回一个新数组,该数组的值与输入数组的顺序相反。我想创建一个名为reverseArryInPlace的函数,该函数会将输入数组的值更改为相反的顺序。

function reverseArray(inputArray) {
  var outputArray = [];
  for (var i = inputArray.length - 1; i >= 0; i--)
    outputArray.push(inputArray[i]);
  return outputArray;
}

function reverseArrayInPlace(inPlaceInputArray) {
  inPlaceInputArray = reverseArray(inPlaceInputArray);
  console.log('Inside reverseArrayInPlace: ' + inPlaceInputArray);
  return inPlaceInputArray;
}

var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log('Outside reverseArrayInPlace: ' + arrayValue);
// Expected Value: [5, 4, 3, 2, 1]

这是我执行以下代码块时得到的结果:
Inside reverseArrayInPlace: 5,4,3,2,1
Outside reverseArrayInPlace: 1,2,3,4,5

在reverseArrayInPlace函数中,arrayValue变量已按预期反转。为什么当我在reverseArrayInPlace函数之外引用相同的变量时又回到原始顺序?

最佳答案

如果您想将其反向,则必须将其反向。

function reverseArrayInPlace(array) {
  for (let i = 0, j = array.length - 1; i < j; i++, j--)
    [array[i], array[j]] = [array[j], array[i]];
}

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

关于javascript - 在JavaScript中反转数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43486578/

10-12 12:54
查看更多