【问题标题】:Reversing a multidimensional array [duplicate]反转多维数组[重复]
【发布时间】:2021-10-30 01:18:12
【问题描述】:

我想反转一个多维数组,到目前为止代码如下:

currentPositionPieceValues: [[], [], [], [], [], [], [], []]

gameDetails.currentPositionPieceValues
          .map(row => row.reverse())
          .reverse();

如果你明白我的意思,这似乎是水平翻转,而不是垂直翻转。

我怎样才能做到这两点?

【问题讨论】:

  • 您是否将结果分配给变量?因为.map 将创建一个新数组,而不是改变现有数组(相反,另一方面,确实会改变它的数组)
  • 您能否分享一个带有示例数据的示例以及它的预期输出?您的代码对我来说似乎工作正常。
  • @ChrisG 那个欺骗目标也有类似的预期结果,但实际上并不是同样的问题。其中没有任何内容可以向提问者解释为什么他们非常相似的解决方案不起作用(例如,它没有提及.reverse() 的就地修改,或.map() 创建的新数组)
  • @ChrisG - 这不是骗子。那只是反转内部数组。这个问题想要两个颠倒。

标签: javascript arrays sorting


【解决方案1】:

你需要做的:

gameDetails.currentPositionPieceValues = gameDetails.currentPositionPieceValues
          .map(row => row.reverse())
          .reverse();

这是因为map 创建了一个新数组,所以外部数组不会被反转,除非你重新分配它。

内部数组正在反转,因为对象总是在 javascript 中通过引用传递。

【讨论】:

  • 这是 100% 的骗子
  • @ChrisG 随时找到并标记它
  • @ChrisG - 为什么要告诉我而不是投票结束?截至撰写本文时,还没有投票结束。
  • @ChrisG 我有 5,514 票接近……很抱歉,我花了 30 秒写了一个答案而不是关闭……哈哈
  • 这不是 100% 的骗局,但也不一定是这样。它显示了执行此操作的一般方法,并指出您需要使用map() 的返回值,这是答案的关键部分。另一个相关的骗子是stackoverflow.com/questions/42242257/…
【解决方案2】:

Map 返回一个新数组。因此,当您执行最后的反向操作时,您正在更改新数组,而不是 currentPositionPieceValues。

const arr = gameDetails.currentPositionPieceValues;
arr.forEach(row => row.reverse());
arr.reverse();

【讨论】:

  • 这是 100% 的骗子......
  • 这不是关于你的记录,而是关于不教人们发帖而不是谷歌,即用重复的内容使网站混乱。您不仅在鼓励这一点,而且还在做出贡献。如果这就是现在 SO 的工作方式,那很好。但我不认为它有,也不应该。
  • @ChrisG - 这并没有改变您列出的这个问题的欺骗性问题实际上不是欺骗性的事实。
猜你喜欢
  • 2019-08-28
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-10
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多