reverse() 直接修改原数组而非返回新数组,仅反转第一层元素顺序,对稀疏数组保留空位,与sort()混用时可能放大排序不稳定性。reverse() 会直接改原数组,不是返回新数组很多人以为 reverse() 像 map() 或 filter() 那样返回新数组,结果发现原数组“莫名其妙”变了——它确实会就地反转,不创建副本。这是它的设计行为,不是 bug。常见错误现象:– 对同一个数组多次调用 reverse(),结果来回翻转– 把 arr.reverse() 赋值给新变量后,还去读 arr,却发现它已经反了– 在函数里传入数组并调用 reverse(),外部数组被意外修改如果需要新数组,必须手动复制:用 [...arr].reverse()、arr.slice().reverse() 或 Array.from(arr).reverse()slice() 是最兼容的写法(IE9+),[...arr] 更简洁但需 ES2015+ 环境注意:JSON.parse(JSON.stringify(arr)).reverse() 不适用于含函数、undefined、Date、RegExp 的数组,慎用reverse() 只反转第一层,不递归处理嵌套数组它只按索引顺序倒排元素位置,不管每个元素内部是什么。哪怕数组里全是数组,也只是把那些子数组整体挪位置,不会深入每个子数组内部去翻转。使用场景举例:– 你想让日志条目按时间倒序显示(数组元素是对象或字符串),reverse() 就够用– 但如果你有一个矩阵 [[1,2], [3,4], [5,6]],调用 reverse() 得到的是 [[5,6], [3,4], [1,2]],不是 [[6,5], [4,3], [2,1]]要深度反转(比如每行也翻转),得自己遍历:arr.reverse().map(row => row.reverse())注意 map() 返回新数组,但 row.reverse() 仍会改原 row;如需完全不改原数据,写成 row.slice().reverse()性能上,嵌套越深、数组越大,手写循环比链式调用更可控reverse() 在稀疏数组中的表现容易被忽略稀疏数组(比如用 arr[100] = 'x' 创建的、中间大量空位的数组)调用 reverse() 后,空位仍为空位,只是位置颠倒了。它不补空值,也不跳过——空位跟着索引一起“翻过去”。 Mokker AI AI产品图添加背景
如何用 reverse 反转数组顺序并注意其对原数组的修改
张小明
前端开发工程师
每日极客日报 · 2026年04月15日
每日极客日报 2026年04月15日 今日精选 21 条 IT 科技热点,覆盖 AI 大模型、开源生态、工程实践、云原生与业界动态等领域。 🔥 今日头条 GPT-6 正式发布:5-6 万亿参数、200 万 Token 上下文,性能提升 40% OpenAI 于 2026 年 4…
C++实战:用libjpeg-turbo实现图片无损压缩(附完整代码)
C实战:用libjpeg-turbo实现图片无损压缩(附完整代码) 在数字图像处理领域,压缩技术始终是开发者需要掌握的核心技能之一。面对海量图片存储和传输的需求,如何在保证图像质量的前提下有效减小文件体积,成为许…
Quartus II 13.0入门指南:VHDL仿真全流程解析
1. Quartus II 13.0初体验:从安装到第一个VHDL项目 第一次打开Quartus II 13.0时,那个深蓝色界面可能会让你有点懵。别担心,我刚开始用的时候也这样,现在让我带你一步步走完整个流程。首先确保你的电脑满足这些基本配置࿱…
Redis RDB 文件恢复技巧
Redis作为高性能内存数据库,其RDB持久化机制通过快照文件保存数据,但误删数据或服务器故障时,如何高效恢复RDB文件成为运维关键。本文将分享实用恢复技巧,助你化解数据危机。 **RDB文件结构解析** RDB是二进制压缩文件ÿ…
Hugging Face模型下载太慢?3种加速方法实测(附ViT本地调用代码)
Hugging Face模型下载太慢?3种加速方法实测(附ViT本地调用代码) 每次从Hugging Face下载模型时,看着进度条像蜗牛一样缓慢移动,是不是特别抓狂?特别是当你在不同的训练服务器之间切换时,反复下载…
OBS Studio下载中文版
OBS Studio免费下载中文版:https://pan.quark.cn/s/4bb884e66677 OBS Studio是由Hugh "Jim" Bailey发起并由OBS Project开源社区共同开发的一款免费且开源的视频录制与直播软件。如果你经常需要进行屏幕分享、游戏推流,特别是那些需要多镜头切…