javascript - 为什么这个反向功能不起作用?

标签 javascript arrays function reverse

为什么这不起作用? 附:我不想使用任何其他变量来使其工作,并且我不想使用内置函数,只是问为什么这不起作用?

function reverse(arr){
  for(var i =0; i< arr.length; i++){
    arr.push(arr[arr.length-i]);
  }
  return arr;
}

最佳答案

您的代码中有很多缺陷。

  • 当您开始推送arr.push(arr[arr.length-i]);时,数组长度会增加,因此,您将无法获得数据的一致性。
  • 这会进入无限循环,因为每次 arr 都会超出其长度。

最好使用另一个变量并反转,或者可以使用内置的 reverse() 函数。使用另一个变量并在其中添加临时内容并没有什么问题。

解决方案:

Using a temporary array:

function reverse(arr) {
    var final = [];
    for (var i = arr.length - 1; i >= 0; i--) {
        final.push(arr[i]);
    }
    return final;
}

Using built-in function (Array.prototype.reverse()):

function reverse(arr) {
    return arr.reverse();
}

Using few temporary variables:

a = [5,4,3,2,1];
function reverse(arr) {
  var i = 0, j = arr.length - 1;
  for (i = 0; i < j; i++, j--) {
    var temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }
  return arr;
}

console.log(reverse(a));

关于javascript - 为什么这个反向功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36917423/

相关文章:

javascript - 高阶函数有什么意义?

r - 将 data.frame 中的数字转换为 R 中的重要性星星

mysql - MariaDB/MySQL 比较所有列的 EXCEPT 替代方案

javascript - Bootstrap 导航栏是否可以像 Bootstrap 选项卡一样工作?

javascript - 如何使用 Javascript 根据是否选中复选框显示警告框

javascript - jquery多选列表更新失败

arrays - 将整数数组拆分为 3 个总和相等的数字 block

c++数组内容在引用全局数组时发生变化

c - 使用 getchar() 和 putchar() 用数组输入和输出一组字符

c - 菜单式程序