You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现reverseArray函数反转数组?现有代码输出异常求解决

解决数组反转函数输出重复的问题

嘿,我来帮你梳理下问题所在,以及怎么修复它~

问题根源

你当前的reverseArray函数并没有真正“反转”数组,而是在原数组的末尾追加了一遍原数组的逆序元素。因为你在循环里执行inputArray.push(inputArray[i]),原数组的元素并没有被移除,只是不断新增元素,最后数组就变成了「原数组 + 逆序原数组」,所以printArray输出的时候就会把所有元素都打出来,也就是你看到的1 2 3 4 5 5 4 3 2 1。

几种修复方案

下面给你几个不同思路的解决方案,你可以根据需求选择:

方案1:生成新的反转数组(不修改原数组)

这种方式不会改动输入的原数组,而是创建一个新数组来存放反转后的结果,适合需要保留原数组的场景:

function printArray (inputArray){
  for(let i = 0; i < inputArray.length; i++){
    console.log(inputArray[i]);
  }
}
function reverseArray (inputArray){
  const reversedArr = [];
  // 从原数组最后一位开始遍历,逐个加入新数组
  for (let i = inputArray.length - 1; i >= 0; i--){
    reversedArr.push(inputArray[i]);
  }
  printArray(reversedArr);
}
reverseArray([1, 2, 3, 4, 5]); // 输出:5 4 3 2 1

方案2:原地反转原数组(修改原数组)

如果希望直接修改原数组实现反转(节省内存,不需要额外数组),可以用双指针交换首尾元素的方式:

function printArray (inputArray){
  for(let i = 0; i < inputArray.length; i++){
    console.log(inputArray[i]);
  }
}
function reverseArray (inputArray){
  let left = 0;
  let right = inputArray.length - 1;
  // 交换首尾元素,直到指针相遇
  while (left < right) {
    // 临时变量存值,交换两个位置的元素
    const temp = inputArray[left];
    inputArray[left] = inputArray[right];
    inputArray[right] = temp;
    left++;
    right--;
  }
  printArray(inputArray);
}
reverseArray([1, 2, 3, 4, 5]); // 输出:5 4 3 2 1

方案3:利用JS内置方法(简洁写法)

JavaScript数组自带reverse()方法,可以直接实现反转,不过要注意这个方法是原地修改原数组的:

function printArray (inputArray){
  for(let i = 0; i < inputArray.length; i++){
    console.log(inputArray[i]);
  }
}
function reverseArray (inputArray){
  // reverse()会修改原数组,返回修改后的数组
  const reversed = inputArray.reverse();
  printArray(reversed);
}
reverseArray([1, 2, 3, 4, 5]); // 输出:5 4 3 2 1

如果不想修改原数组,可以先复制一份再反转:

function reverseArray (inputArray){
  // 用扩展运算符复制原数组,再反转副本
  const reversed = [...inputArray].reverse();
  printArray(reversed);
}

内容的提问来源于stack exchange,提问作者Rrf F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:27:28