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

如何实现多维数组的水平与垂直双向反转?

问题原因

你现有代码的执行结果和预期不符的核心逻辑是:

  • Array.prototype.reverse()是原地修改方法,你在map回调内调用row.reverse()会直接修改原数组的每一行,所以你能看到水平翻转的效果
  • map方法不会修改原数组,会返回一个新数组,你后续调用的.reverse()是作用在map返回的临时新数组上,没有把结果赋值回原变量,所以垂直翻转的效果没有落地到原数组上

调整方案

方案1:直接修改原数组

// 先逐行水平反转
gameDetails.currentPositionPieceValues.forEach(row => row.reverse())
// 再整体垂直反转
gameDetails.currentPositionPieceValues.reverse()

方案2:不污染原数组,返回新的反转后数组

如果需要保留原始数组数据,先对每一行做浅拷贝再执行反转:

const reversedPieceValues = gameDetails.currentPositionPieceValues
  .map(row => [...row].reverse()) // 拷贝每行后再反转,不修改原行数据
  .reverse()

两种方案都可以同时完成水平+垂直的双向反转效果,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:51:00