在javascript中从二维数组中select一个二维数组

我想从一个大的2D数组中select一个2D数组,我知道如何使用for循环做这个,但我想知道是否有一个更有效的方法来实现这一点。

例:

[0,0,0,0,0,1,0] [0,0,0,3,0,1,0] [0,0,0,0,0,1,0] [0,0,0,0,0,1,0] 

从这个数组我想创build一个新的数组包含

 [0.0.1] [3.0.1] [0.0.1] 

那么有什么更好的方法来创build第二个数组比使用一些简单的循环?

与for循环方法相比,我不能说这种技术的相对效率,但是您可以利用JavaScript数组的slice函数(而不是第一维)。

 Array.prototype.extract2d = function extract2d( x1, y1, x2, y2 ) { var result = []; for ( var y = y1; y <= y2; y++ ) { result.push( this[y].slice( x1, x2 ) ); } return result; } 

因此,你可以这样做:

 var grid = [ [0,0,0,0,0,1,0], [0,0,0,3,0,1,0], [0,0,0,0,0,1,0], [0,0,0,0,0,1,0] ]; var subgrid = grid.extract2d( 3, 0, 5, 2 ); 

请注意缺less边界检查或validation,子数组实际上是子数组!