Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中镜像多维数组?_Javascript_Arrays_Multidimensional Array_Mirroring - Fatal编程技术网

如何在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]