javascript - 如何在javascript中重新排列数组

标签 javascript arrays

我希望数组在最后一个和第一个之间切换位置。输出结果将为 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/

相关文章:

javascript - header 中的 json 语法错误

javascript - 禁用多选?

javascript - 将子级的宽度设置为父级的宽度

java - 从学生详细信息如何使用唯一的卷号调用和显示存储在数组中的特定详细信息

Ruby 正则表达式仅返回数字数组

javascript - 基于 HTML5 视频分辨率的动态父 div 宽度和高度

javascript - 使用正则表达式验证用户名

java - 将文本文件中的数字读取到 Java 中的 ArrayList

javascript - 返回对象数组的键名

javascript - 如何在 typescript 中将新的接口(interface)类型插入数组