如何在javascript中镜像多维数组?
我需要能够镜像大小发生变化的多维数组。我目前正在为每个特定的数组大小进行硬编码,效率非常低 例如:如何在javascript中镜像多维数组?,javascript,arrays,multidimensional-array,mirroring,Javascript,Arrays,Multidimensional Array,Mirroring,我需要能够镜像大小发生变化的多维数组。我目前正在为每个特定的数组大小进行硬编码,效率非常低 例如: Arr1 { 1 2 3 Arr2 { 1 2 4 5 6 3 4 7 8 9 } 5 6 } 镜像: { 3 2 1 { 2 1 6 5 4 4 3
Arr1 { 1 2 3 Arr2 { 1 2
4 5 6 3 4
7 8 9 } 5 6 }
镜像:
{ 3 2 1 { 2 1
6 5 4 4 3
9 8 7 } 6 5 }
阵列的大小从2x5到4x10不等。好的,所以您只需要一个水平镜像。 我想你的数组每行都包含一个数组, 这意味着你只需要反转每一行
for(var i=0;i<multiarr.length;i++){
multiarr[i].reverse();
}
对于每一行:
对于i=0至宽度/2:
arr[line][i]arr[line][width-i]
这难道不可行吗?你在第二个数组上使用了什么逻辑你在试图修改原始数组吗?比如,
Arr1
以前是[[1,2,3],[4,5,6],[7,8,9]
,现在是[[3,2,1],[6,5,4],[9,8,7]
?或者你正在尝试创建数组的副本——比如Arr1
是[[1,2,3],[4,5,6],[7,8,9]
,所以你需要mirror\u Arr
成为[[3,2,1],[6,5,4],[9,8,7]
?确实应该是这样,但是js有一个内置的reverse()函数。我在写了第一个答案后就想到了这一点。很多人都在用循环将代码过度复杂化以编辑数组,而他们只需使用map(),您的示例中的map
有点误导,因为这并不表明回调应用于其副作用。(返回的尤其是是一种模糊处理。)有时这是没有帮助的,但在这种情况下,我认为multiarr.forEach(函数(arr){arr.reverse();})
会更清楚。forEach的浏览器支持是什么?当我需要它时,我总是使用jQuery等价的$。eachI知道我想得太多了。谢谢
multiarr.map(function(arr){return arr.reverse();});
For each of the lines:
For i = 0 to width/2:
arr[line][i] <-> arr[line][width - i]