1
我一直在通过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);
解决方案的工作,所以很明显我的逻辑是关闭的。我哪里错了?
数组索引从零开始,所以'arr [4]'是'5',而不是'4'。 – Pointy
哦,哇,我很笨。由于.length是5并且减去1,所以我被抛弃了。尽管如此,现在这很合理。谢啦 –