【发布时间】:2017-09-15 03:25:56
【问题描述】:
我有一个名为 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函数外引用同一个变量时,又回到原来的顺序了?
【问题讨论】:
-
如果有功课就好了;它具有一个好问题的所有品质
-
您认为“InPlace”部分发生在您的代码中的什么位置?
-
您的
reverseArrayInPlace()不会就地 反转,它会创建一个新数组(这不是就地)。要反转 就地 交换原始数组中的元素,请不要创建新元素。 -
可以使用Array.reverse()函数
-
这是 Eloquent Javascript 书中的一个问题,但它不是家庭作业,因为我不在学校
标签: javascript arrays scope