我希望数组在最后一个和第一个之间切换位置。输出结果将为 8-1 但是当我尝试这样做时,第一个索引未定义,第二个索引仍然是 1
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
for (var i = 0; i <= arr1.length / 2; i++) {
var tmp = arr1[i];
arr1[i] = arr1[arr1.length - i];
arr1[arr1.length - i] = tmp;
};
console.log(arr1);
谁能帮我理解为什么?
最佳答案
for (var i =0; i<= arr1.length/2;i++){
var tmp = arr1[i];
arr1[i] = arr1 [arr1.length-i-1] ;
arr1 [arr1.length-i-1] = tmp ;
};
我们减去 1,因为当 i 为 0 时,arr1.length-i
是数组长度,已经超出数组末尾了。
我不认为i<=arr1.length/2
也必然是正确的,4 和 5 不会被交换(或者可能它们被交换两次)。我尝试了这个,它起作用了:i<= arr1.length/2-1
。这也有效:i < arr1.length/2
。还测试了偶数和奇数数组长度的那些,看起来不错。第二个可能更有意义哈哈。
关于javascript - 如何在javascript中重新排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54866481/