我在javascript中介绍自己,我正处于雄辩的javascript中,其中一个数组被反转,
function reverseArrayInPlace(array) {
for (var i = 0; i < Math.floor(array.length / 2); i++) {
var old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
console.log(old);
}
return array;
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
// → [5, 4, 3, 2, 1]
我认为var old已更新,但我认为它不是[来自console.log],它与控制台上的第一个旧版本相同。我试图用i&lt; 1操纵for循环;它仍然颠倒了5和1。
我的问题是,这个循环是如何逆转的?在这行代码中具有特异性
var old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i]= old;
非常感谢示例演示
答案 0 :(得分:0)
该代码正在交换数组的元素。
var array = [1, 2, 3, 4, 5];
var temp = array[0]; // 1
array[0] = array[4]; // array is now [5, 2, 3, 4, 5]
array[4] = temp; // array is now [5, 2, 3, 4, 1]
现在您可以想象使用array[1]
和array[3]
等重复此操作以完全反转数组。这就是你的代码正在做的事情。
添加一些日志记录可能有助于进一步了解正在发生的事情:
function reverseArrayInPlace(array) {
var limit = Math.floor(array.length / 2);
console.log('Limit is ' + limit);
for (var i = 0; i < limit; i++) {
console.log('Looping with i = ' + i);
console.log('Array starting as ' + array);
var old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
console.log('Array after swap: ' + array);
console.log('\n');
}
console.log('Done!');
return array;
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);