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

JavaScript不用.reverse()原地反转数组:不同类型元素反转失败

数组原地反转问题的修复方案

问题根源

你的反转函数循环终止条件写错了,i <= list.length / 2会导致偶数长度数组出现重复交换问题。拿长度为4的数组举例:当i走到2时,j已经是1,此时i > j,交换这两个位置会把之前已经交换好的元素又换回去,直接导致中间两个元素(索引1和2)没完成正确交换。

修复后的代码

把循环条件改成i < j即可,当两个指针相遇或交叉时停止循环,避免无效交换:

reverse.js

#!/usr/bin/node
exports.rev = function (list) {
  for (let i = 0, j = list.length - 1; i < j; i++, j--) {
    [list[i], list[j]] = [list[j], list[i]];
  }
  return list;
};

测试验证

运行你的main.js,输出会完全符合预期:

  • 第一个数组:[5, 4, 3, 2, 1]
  • 第二个数组:["String", { id: 12 }, 89, "School"]

该方案完全满足约束:未使用.reverse()方法,全程原地交换,未创建新数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:15:36