我有一个名为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函数之外引用同一变量时,它又回到了原始顺序?
reverseArrayInPlace()
方法并没有真正地 原地 反转数组,而是创建了一个新的数组(这不是 原地)。要实现 原地 反转,请交换原始数组中的元素,而不是创建一个新数组。 - Jean-Baptiste Yunès